diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..523b710 --- /dev/null +++ b/.gitignore @@ -0,0 +1,17 @@ +# 备份文件 +*.bak +*.backup +*.backup.* +*.backup[0-9]* + +# fcitx5 运行时缓存 +fcitx5/conf/cached_layouts + +# DankMaterialShell 运行时标志 +DankMaterialShell/.firstlaunch +DankMaterialShell/.changelog-* + +# 系统杂项 +.DS_Store +*~ +*.swp diff --git a/.zshrc b/.zshrc index d689252..71e4b1b 100644 --- a/.zshrc +++ b/.zshrc @@ -83,11 +83,15 @@ source $ZSH/oh-my-zsh.sh # export LANG=en_US.UTF-8 # Preferred editor for local and remote sessions -if [[ -n $SSH_CONNECTION ]]; then - export EDITOR='vim' -else - export EDITOR='nvim' -fi +# if [[ -n $SSH_CONNECTION ]]; then +# export EDITOR='vim' +# else +# export EDITOR='nvim' +# fi + +export EDITOR='nvim' + +alias vim=nvim # Compilation flags # export ARCHFLAGS="-arch $(uname -m)" diff --git a/DankMaterialShell/firefox.css b/DankMaterialShell/firefox.css new file mode 100644 index 0000000..9b8ff85 --- /dev/null +++ b/DankMaterialShell/firefox.css @@ -0,0 +1,132 @@ +@media -moz-pref("userChrome.theme-material") { + :root { + --md-sys-color-primary: #1976d2; + --md-sys-color-surface-tint: #1976d2; + --md-sys-color-on-primary: #ffffff; + --md-sys-color-primary-container: #e3f2fd; + --md-sys-color-on-primary-container: #181c20; + --md-sys-color-secondary: #42a5f5; + --md-sys-color-on-secondary: #ffffff; + --md-sys-color-secondary-container: #e6e8ee; + --md-sys-color-on-secondary-container: #181c20; + --md-sys-color-tertiary: #42a5f5; + --md-sys-color-on-tertiary: #ffffff; + --md-sys-color-tertiary-container: #e6e8ee; + --md-sys-color-on-tertiary-container: #181c20; + --md-sys-color-error: #b3261e; + --md-sys-color-on-error: #ffffff; + --md-sys-color-error-container: #f9dedc; + --md-sys-color-on-error-container: #410e0b; + --md-sys-color-background: #f7f9ff; + --md-sys-color-on-background: #181c20; + --md-sys-color-surface: #f7f9ff; + --md-sys-color-on-surface: #181c20; + --md-sys-color-surface-variant: #dee3eb; + --md-sys-color-on-surface-variant: #42474e; + --md-sys-color-outline: #72777f; + --md-sys-color-outline-variant: #dee3eb; + --md-sys-color-shadow: #000000; + --md-sys-color-scrim: #000000; + --md-sys-color-inverse-surface: #101418; + --md-sys-color-inverse-on-surface: #e0e2e8; + --md-sys-color-inverse-primary: #42a5f5; + --md-sys-color-primary-fixed: #e3f2fd; + --md-sys-color-on-primary-fixed: #ffffff; + --md-sys-color-primary-fixed-dim: #1976d2; + --md-sys-color-on-primary-fixed-variant: #ffffff; + --md-sys-color-secondary-fixed: #42a5f5; + --md-sys-color-on-secondary-fixed: #ffffff; + --md-sys-color-secondary-fixed-dim: #42a5f5; + --md-sys-color-on-secondary-fixed-variant: #ffffff; + --md-sys-color-tertiary-fixed: #42a5f5; + --md-sys-color-on-tertiary-fixed: #ffffff; + --md-sys-color-tertiary-fixed-dim: #42a5f5; + --md-sys-color-on-tertiary-fixed-variant: #ffffff; + --md-sys-color-surface-dim: #eceef4; + --md-sys-color-surface-bright: #f7f9ff; + --md-sys-color-surface-container-lowest: #f7f9ff; + --md-sys-color-surface-container-low: #f7f9ff; + --md-sys-color-surface-container: #f7f9ff; + --md-sys-color-surface-container-high: #f7f9ff; + --md-sys-color-surface-container-highest: #f7f9ff; + + --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: #42a5f5; + --md-sys-color-surface-tint: #42a5f5; + --md-sys-color-on-primary: #000000; + --md-sys-color-primary-container: #0d47a1; + --md-sys-color-on-primary-container: #e0e2e8; + --md-sys-color-secondary: #8ab4f8; + --md-sys-color-on-secondary: #000000; + --md-sys-color-secondary-container: #272a2f; + --md-sys-color-on-secondary-container: #e0e2e8; + --md-sys-color-tertiary: #8ab4f8; + --md-sys-color-on-tertiary: #000000; + --md-sys-color-tertiary-container: #272a2f; + --md-sys-color-on-tertiary-container: #e0e2e8; + --md-sys-color-error: #f2b8b5; + --md-sys-color-on-error: #601410; + --md-sys-color-error-container: #8c1d18; + --md-sys-color-on-error-container: #f9dedc; + --md-sys-color-background: #101418; + --md-sys-color-on-background: #e0e2e8; + --md-sys-color-surface: #101418; + --md-sys-color-on-surface: #e0e2e8; + --md-sys-color-surface-variant: #42474e; + --md-sys-color-on-surface-variant: #c2c7cf; + --md-sys-color-outline: #8c9199; + --md-sys-color-outline-variant: #42474e; + --md-sys-color-shadow: #000000; + --md-sys-color-scrim: #000000; + --md-sys-color-inverse-surface: #f7f9ff; + --md-sys-color-inverse-on-surface: #181c20; + --md-sys-color-inverse-primary: #1976d2; + --md-sys-color-primary-fixed: #0d47a1; + --md-sys-color-on-primary-fixed: #000000; + --md-sys-color-primary-fixed-dim: #42a5f5; + --md-sys-color-on-primary-fixed-variant: #000000; + --md-sys-color-secondary-fixed: #8ab4f8; + --md-sys-color-on-secondary-fixed: #000000; + --md-sys-color-secondary-fixed-dim: #8ab4f8; + --md-sys-color-on-secondary-fixed-variant: #000000; + --md-sys-color-tertiary-fixed: #8ab4f8; + --md-sys-color-on-tertiary-fixed: #000000; + --md-sys-color-tertiary-fixed-dim: #8ab4f8; + --md-sys-color-on-tertiary-fixed-variant: #000000; + --md-sys-color-surface-dim: #101418; + --md-sys-color-surface-bright: #32353a; + --md-sys-color-surface-container-lowest: #101418; + --md-sys-color-surface-container-low: #101418; + --md-sys-color-surface-container: #1d2024; + --md-sys-color-surface-container-high: #272a2f; + --md-sys-color-surface-container-highest: #32353a; + + --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/DankMaterialShell/settings.json b/DankMaterialShell/settings.json new file mode 100644 index 0000000..8cd6cd3 --- /dev/null +++ b/DankMaterialShell/settings.json @@ -0,0 +1,632 @@ +{ + "currentThemeName": "dynamic", + "currentThemeCategory": "dynamic", + "customThemeFile": "", + "registryThemeVariants": {}, + "matugenScheme": "scheme-tonal-spot", + "runUserMatugenTemplates": true, + "matugenTargetMonitor": "", + "popupTransparency": 1, + "dockTransparency": 1, + "widgetBackgroundColor": "sch", + "widgetColorMode": "default", + "controlCenterTileColorMode": "primary", + "buttonColorMode": "primary", + "cornerRadius": 12, + "niriLayoutGapsOverride": -1, + "niriLayoutRadiusOverride": -1, + "niriLayoutBorderSize": -1, + "hyprlandLayoutGapsOverride": -1, + "hyprlandLayoutRadiusOverride": -1, + "hyprlandLayoutBorderSize": -1, + "mangoLayoutGapsOverride": -1, + "mangoLayoutRadiusOverride": -1, + "mangoLayoutBorderSize": -1, + "use24HourClock": true, + "showSeconds": false, + "padHours12Hour": false, + "useFahrenheit": false, + "windSpeedUnit": "kmh", + "nightModeEnabled": false, + "animationSpeed": 2, + "customAnimationDuration": 500, + "syncComponentAnimationSpeeds": true, + "popoutAnimationSpeed": 1, + "popoutCustomAnimationDuration": 150, + "modalAnimationSpeed": 1, + "modalCustomAnimationDuration": 150, + "enableRippleEffects": true, + "blurEnabled": false, + "blurForegroundLayers": true, + "blurLayerOutlineOpacity": 0.12, + "blurBorderColor": "outline", + "blurBorderCustomColor": "#ffffff", + "blurBorderOpacity": 0.35, + "wallpaperFillMode": "Fill", + "blurredWallpaperLayer": false, + "blurWallpaperOnOverview": true, + "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": "bluetooth", + "enabled": true, + "width": 50 + }, + { + "id": "audioOutput", + "enabled": true, + "width": 50 + }, + { + "id": "audioInput", + "enabled": true, + "width": 50 + }, + { + "id": "nightMode", + "enabled": true, + "width": 50 + }, + { + "id": "darkMode", + "enabled": true, + "width": 50 + }, + { + "id": "idleInhibitor", + "enabled": true, + "width": 50 + }, + { + "id": "doNotDisturb", + "enabled": true, + "width": 50 + } + ], + "showWorkspaceIndex": false, + "showWorkspaceName": false, + "showWorkspacePadding": false, + "workspaceScrolling": false, + "showWorkspaceApps": false, + "workspaceDragReorder": true, + "maxWorkspaceIcons": 1, + "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": true, + "scrollTitleEnabled": true, + "audioVisualizerEnabled": true, + "audioScrollMode": "volume", + "audioWheelScrollAmount": 5, + "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": [ + { + "pattern": "Spotify", + "replacement": "spotify", + "type": "exact" + }, + { + "pattern": "beepertexts", + "replacement": "beeper", + "type": "exact" + }, + { + "pattern": "home assistant desktop", + "replacement": "homeassistant-desktop", + "type": "exact" + }, + { + "pattern": "com.transmissionbt.transmission", + "replacement": "transmission-gtk", + "type": "contains" + }, + { + "pattern": "^steam_app_(\\d+)$", + "replacement": "steam_icon_$1", + "type": "regex" + } + ], + "centeringMode": "geometric", + "clockDateFormat": "", + "lockDateFormat": "", + "greeterRememberLastSession": true, + "greeterRememberLastUser": true, + "greeterEnableFprint": false, + "greeterEnableU2f": false, + "greeterWallpaperPath": "", + "mediaSize": 1, + "appLauncherViewMode": "list", + "spotlightModalViewMode": "list", + "browserPickerViewMode": "list", + "browserUsageHistory": { + "firefox": { + "count": 7, + "lastUsed": 1782706566185, + "name": "Firefox" + } + }, + "appPickerViewMode": "grid", + "filePickerUsageHistory": {}, + "sortAppsAlphabetically": false, + "appLauncherGridColumns": 4, + "spotlightCloseNiriOverview": true, + "spotlightSectionViewModes": { + "apps": "list" + }, + "appDrawerSectionViewModes": {}, + "niriOverviewOverlayEnabled": true, + "dankLauncherV2Size": "compact", + "dankLauncherV2BorderEnabled": false, + "dankLauncherV2BorderThickness": 2, + "dankLauncherV2BorderColor": "primary", + "dankLauncherV2ShowFooter": true, + "dankLauncherV2UnloadOnClose": true, + "useAutoLocation": true, + "weatherEnabled": true, + "networkPreference": "auto", + "iconTheme": "System Default", + "cursorSettings": { + "theme": "breeze_cursors", + "size": 24, + "niri": { + "hideWhenTyping": true, + "hideAfterInactiveMs": 5000 + }, + "hyprland": { + "hideOnKeyPress": false, + "hideOnTouch": false, + "inactiveTimeout": 0 + }, + "dwl": { + "cursorHideTimeout": 0 + } + }, + "launcherLogoMode": "os", + "launcherLogoCustomPath": "", + "launcherLogoColorOverride": "", + "launcherLogoColorInvertOnMode": false, + "launcherLogoBrightness": 0.5, + "launcherLogoContrast": 1, + "launcherLogoSizeOffset": 0, + "fontFamily": "Inter Variable", + "monoFontFamily": "Maple Mono NF CN", + "fontWeight": 400, + "fontScale": 1, + "notepadUseMonospace": true, + "notepadFontFamily": "", + "notepadFontSize": 14, + "notepadShowLineNumbers": false, + "notepadTransparencyOverride": -1, + "notepadLastCustomTransparency": 0.7, + "soundsEnabled": true, + "useSystemSoundTheme": true, + "soundNewNotification": true, + "soundVolumeChanged": true, + "soundPluggedIn": true, + "acMonitorTimeout": 1200, + "acLockTimeout": 900, + "acSuspendTimeout": 3600, + "acSuspendBehavior": 0, + "acProfileName": "1", + "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": true, + "matugenTemplateMangowc": true, + "matugenTemplateQt5ct": true, + "matugenTemplateQt6ct": true, + "matugenTemplateFirefox": true, + "matugenTemplatePywalfox": true, + "matugenTemplateZenBrowser": true, + "matugenTemplateVesktop": true, + "matugenTemplateEquibop": true, + "matugenTemplateGhostty": true, + "matugenTemplateKitty": true, + "matugenTemplateFoot": false, + "matugenTemplateAlacritty": true, + "matugenTemplateNeovim": false, + "matugenTemplateWezterm": true, + "matugenTemplateDgop": true, + "matugenTemplateKcolorscheme": true, + "matugenTemplateVscode": true, + "matugenTemplateEmacs": true, + "matugenTemplateZed": true, + "showDock": true, + "dockAutoHide": false, + "dockSmartAutoHide": true, + "dockGroupByApp": false, + "dockOpenOnOverview": true, + "dockPosition": 1, + "dockSpacing": 4, + "dockBottomGap": 0, + "dockMargin": 0, + "dockIconSize": 40, + "dockIndicatorStyle": "circle", + "dockBorderEnabled": false, + "dockBorderColor": "surfaceText", + "dockBorderOpacity": 1, + "dockBorderThickness": 1, + "dockIsolateDisplays": false, + "dockLauncherEnabled": true, + "dockLauncherLogoMode": "os", + "dockLauncherLogoCustomPath": "", + "dockLauncherLogoColorOverride": "", + "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": true, + "lockAtStartup": false, + "enableFprint": false, + "maxFprintTries": 15, + "enableU2f": false, + "u2fMode": "or", + "lockScreenActiveMonitor": "all", + "lockScreenInactiveColor": "#000000", + "lockScreenNotificationMode": 0, + "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": false, + "osdPosition": 4, + "osdVolumeEnabled": true, + "osdMediaVolumeEnabled": true, + "osdMediaPlaybackEnabled": false, + "osdBrightnessEnabled": true, + "osdIdleInhibitorEnabled": true, + "osdMicMuteEnabled": true, + "osdCapsLockEnabled": true, + "osdPowerProfileEnabled": true, + "osdAudioOutputEnabled": true, + "powerActionConfirm": true, + "powerActionHoldDuration": 0.5, + "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": "workspaceSwitcher", + "enabled": true + }, + { + "id": "cpuUsage", + "enabled": true, + "minimumWidth": true + }, + { + "id": "cpuTemp", + "enabled": true, + "minimumWidth": true + }, + { + "id": "network_speed_monitor", + "enabled": true + }, + { + "id": "focusedWindow", + "enabled": true, + "focusedWindowCompactMode": true + } + ], + "centerWidgets": [ + "music", + { + "id": "weather", + "enabled": true + } + ], + "rightWidgets": [ + { + "id": "systemTray", + "enabled": true + }, + { + "id": "clipboard", + "enabled": true + }, + { + "id": "battery", + "enabled": true + }, + { + "id": "controlCenterButton", + "enabled": true + }, + { + "id": "clock", + "enabled": true, + "clockCompactMode": false + }, + { + "id": "powerMenuButton", + "enabled": true + } + ], + "spacing": 4, + "innerPadding": -2, + "bottomGap": 0, + "transparency": 1, + "widgetTransparency": 1, + "squareCorners": false, + "noBackground": false, + "maximizeWidgetIcons": false, + "maximizeWidgetText": false, + "removeWidgetPadding": false, + "widgetPadding": 8, + "gothCornersEnabled": false, + "gothCornerRadiusOverride": false, + "gothCornerRadiusValue": 12, + "borderEnabled": false, + "borderColor": "surfaceText", + "borderOpacity": 1, + "borderThickness": 1, + "widgetOutlineEnabled": false, + "widgetOutlineColor": "primary", + "widgetOutlineOpacity": 1, + "widgetOutlineThickness": 1, + "fontScale": 1, + "iconScale": 1, + "autoHide": false, + "autoHideDelay": 250, + "showOnWindowsOpen": false, + "openOnOverview": false, + "visible": true, + "popupGapsAuto": true, + "popupGapsManual": 4, + "maximizeDetection": true, + "scrollEnabled": true, + "scrollXBehavior": "column", + "scrollYBehavior": "workspace", + "shadowIntensity": 0, + "shadowOpacity": 60, + "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": {}, + "desktopWidgetInstances": [], + "desktopWidgetGroups": [], + "builtInPluginSettings": { + "dms_settings_search": { + "trigger": "?" + } + }, + "clipboardEnterToPaste": false, + "launcherPluginVisibility": {}, + "launcherPluginOrder": [], + "configVersion": 5 +} \ No newline at end of file diff --git a/cava/shaders/bar_spectrum.frag b/cava/shaders/bar_spectrum.frag new file mode 100644 index 0000000..473301c --- /dev/null +++ b/cava/shaders/bar_spectrum.frag @@ -0,0 +1,73 @@ +#version 330 + +in vec2 fragCoord; +out vec4 fragColor; + +// bar values. defaults to left channels first (low to high), then right (high to low). +uniform float bars[512]; + +uniform int bars_count; // number of bars (left + right) (configurable) +uniform int bar_width; // bar width (configurable), not used here +uniform int bar_spacing; // space between bars (configurable) + +uniform vec3 u_resolution; // window resolution + +// colors, configurable in cava config file (r,g,b) (0.0 - 1.0) +uniform vec3 bg_color; // background color +uniform vec3 fg_color; // foreground color + +uniform int gradient_count; +uniform vec3 gradient_colors[8]; // gradient colors + +uniform float shader_time; // shader execution time s (not used here) + +uniform sampler2D inputTexture; // Texture from the last render pass (not used here) + +vec3 normalize_C(float y, vec3 col_1, vec3 col_2, float y_min, float y_max) { + // create color based on fraction of this color and next color + float yr = (y - y_min) / (y_max - y_min); + return col_1 * (1.0 - yr) + col_2 * yr; +} + +void main() { + // find which bar to use based on where we are on the x axis + float x = u_resolution.x * fragCoord.x; + int bar = int(bars_count * fragCoord.x); + + // calculate a bar size + float bar_size = u_resolution.x / bars_count; + + // the y coordinate and bar values are the same + float y = bars[bar]; + + // make sure there is a thin line at bottom + if (y * u_resolution.y < 1.0) { + y = 1.0 / u_resolution.y; + } + + // draw the bar up to current height + if (y > fragCoord.y) { + // make some space between bars basen on settings + if (x > (bar + 1) * (bar_size)-bar_spacing) { + fragColor = vec4(bg_color, 1.0); + } else { + if (gradient_count == 0) { + fragColor = vec4(fg_color, 1.0); + } else { + // find which color in the configured gradient we are at + int color = int((gradient_count - 1) * fragCoord.y); + + // find where on y this and next color is supposed to be + float y_min = color / (gradient_count - 1.0); + float y_max = (color + 1.0) / (gradient_count - 1.0); + + // make color + fragColor = vec4(normalize_C(fragCoord.y, gradient_colors[color], + gradient_colors[color + 1], y_min, y_max), + 1.0); + } + } + } else { + fragColor = vec4(bg_color, 1.0); + } +} diff --git a/cava/shaders/eye_of_phi.frag b/cava/shaders/eye_of_phi.frag new file mode 100644 index 0000000..b66b607 --- /dev/null +++ b/cava/shaders/eye_of_phi.frag @@ -0,0 +1,117 @@ +#version 330 + +// this shader was stolen from shadertoy user ChunderFPV + +#define SCALE 8.0 +#define PI radians(180.0) +#define TAU (PI * 2.0) +#define CS(a) vec2(cos(a), sin(a)) +#define PT(u, r) smoothstep(0.0, r, r - length(u)) + +in vec2 fragCoord; +out vec4 fragColor; + +uniform float bars[512]; + +uniform int bars_count; // number of bars (left + right) (configurable) +uniform float shader_time; // shader execution time s +uniform int bar_width; // bar width (configurable), not used here +uniform int bar_spacing; // space between bars (configurable) + +uniform vec3 u_resolution; // window resolution + +// colors, configurable in cava config file (r,g,b) (0.0 - 1.0) +uniform vec3 bg_color; // background color +uniform vec3 fg_color; // foreground color + +uniform int gradient_count; +uniform vec3 gradient_colors[8]; // gradient colors + +// gradient map ( color, equation, time, width, shadow, reciprocal ) +vec3 gm(vec3 c, float n, float t, float w, float d, bool i) { + float g = min(abs(n), 1.0 / abs(n)); + float s = abs(sin(n * PI - t)); + if (i) + s = min(s, abs(sin(PI / n + t))); + return (1.0 - pow(abs(s), w)) * c * pow(g, d) * 6.0; +} + +// denominator spiral, use 1/n for numerator +// ( screen xy, spiral exponent, decimal, line width, hardness, rotation ) +float ds(vec2 u, float e, float n, float w, float h, float ro) { + float ur = length(u); // unit radius + float sr = pow(ur, e); // spiral radius + float a = round(sr) * n * TAU; // arc + vec2 xy = CS(a + ro) * ur; // xy coords + float l = PT(u - xy, w); // line + float s = mod(sr + 0.5, 1.0); // gradient smooth + s = min(s, 1.0 - s); // darken filter + return l * s * h; +} + +void main() { + float t = shader_time / PI * 2.0; + vec4 m = vec4(0, 0, 0, 0); // iMouse; + m.xy = m.xy * 2.0 / u_resolution.xy - 1.0; // ±1x, ±1y + if (m.z > 0.0) + t += m.y * SCALE; // move time with mouse y + float z = (m.z > 0.0) ? pow(1.0 - abs(m.y), sign(m.y)) : 1.0; // zoom (+) + float e = (m.z > 0.0) ? pow(1.0 - abs(m.x), -sign(m.x)) + : 1.0; // screen exponent (+) + float se = (m.z > 0.0) ? e * -sign(m.y) : 1.0; // spiral exponent + vec3 bg = vec3(0); // black background + + float aa = 3.0; // anti-aliasing + + for (float j = 0.0; j < aa; j++) + for (float k = 0.0; k < aa; k++) { + vec3 c = vec3(0); + vec2 o = vec2(j, k) / aa; + vec2 uv = (fragCoord * u_resolution.xy - 0.5 * u_resolution.xy + o) / + u_resolution.y * SCALE * z; // apply cartesian, scale and zoom + if (m.z > 0.0) + uv = + exp(log(abs(uv)) * e) * sign(uv); // warp screen space with exponent + + float px = length(fwidth(uv)); // pixel width + float x = uv.x; // every pixel on x + float y = uv.y; // every pixel on y + float l = length(uv); // hypot of xy: sqrt(x*x+y*y) + + float mc = (x * x + y * y - 1.0) / y; // metallic circle at xy + float g = min(abs(mc), 1.0 / abs(mc)); // gradient + vec3 gold = vec3(1.0, 0.6, 0.0) * g * l; + vec3 blue = vec3(0.3, 0.5, 0.9) * (1.0 - g); + vec3 rgb = max(gold, blue); + + float w = 0.1; // line width + float d = 0.4; // shadow depth + c = max(c, gm(rgb, mc, -t, w * bars[0], d, false)); // metallic + c = max(c, gm(rgb, abs(y / x) * sign(y), -t, w * bars[1], d, + false)); // tangent + c = max(c, gm(rgb, (x * x) / (y * y) * sign(y), -t, w * bars[2], d, + false)); // sqrt cotangent + c = max(c, gm(rgb, (x * x) + (y * y), t, w * bars[3], d, + true)); // sqrt circles + + c += rgb * ds(uv, se, t / TAU, px * 2.0 * bars[4], 2.0, 0.0); // spiral 1a + c += rgb * ds(uv, se, t / TAU, px * 2.0 * bars[5], 2.0, PI); // spiral 1b + c += + rgb * ds(uv, -se, t / TAU, px * 2.0 * bars[6], 2.0, 0.0); // spiral 2a + c += rgb * ds(uv, -se, t / TAU, px * 2.0 * bars[7], 2.0, PI); // spiral 2b + c = max(c, 0.0); // clear negative color + + c += pow(max(1.0 - l, 0.0), 3.0 / z); // center glow + + if (m.z > 0.0) // display grid on click + { + vec2 xyg = abs(fract(uv + 0.5) - 0.5) / px; // xy grid + c.gb += 0.2 * (1.0 - min(min(xyg.x, xyg.y), 1.0)); + } + bg += c; + } + bg /= aa * aa; + bg *= sqrt(bg) * 1.5; + + fragColor = vec4(bg, 1.0); +} diff --git a/cava/shaders/northern_lights.frag b/cava/shaders/northern_lights.frag new file mode 100644 index 0000000..ecd859a --- /dev/null +++ b/cava/shaders/northern_lights.frag @@ -0,0 +1,34 @@ +#version 330 + +in vec2 fragCoord; +out vec4 fragColor; + +// bar values. defaults to left channels first (low to high), then right (high to low). +uniform float bars[512]; + +uniform int bars_count; // number of bars (left + right) (configurable) + +uniform vec3 u_resolution; // window resolution, not used here + +//colors, configurable in cava config file +uniform vec3 bg_color; // background color(r,g,b) (0.0 - 1.0), not used here +uniform vec3 fg_color; // foreground color, not used here + +void main() +{ + // find which bar to use based on where we are on the x axis + int bar = int(bars_count * fragCoord.x); + + float bar_y = 1.0 - abs((fragCoord.y - 0.5)) * 2.0; + float y = (bars[bar]) * bar_y; + + float bar_x = (fragCoord.x - float(bar) / float(bars_count)) * bars_count; + float bar_r = 1.0 - abs((bar_x - 0.5)) * 2; + + bar_r = bar_r * bar_r * 2; + + // set color + fragColor.r = fg_color.x * y * bar_r; + fragColor.g = fg_color.y * y * bar_r; + fragColor.b = fg_color.z * y * bar_r; +} diff --git a/cava/shaders/pass_through.vert b/cava/shaders/pass_through.vert new file mode 100644 index 0000000..a4f20e5 --- /dev/null +++ b/cava/shaders/pass_through.vert @@ -0,0 +1,14 @@ +#version 330 + + +// Input vertex data, different for all executions of this shader. +layout(location = 0) in vec3 vertexPosition_modelspace; + +// Output data ; will be interpolated for each fragment. +out vec2 fragCoord; + +void main() +{ + gl_Position = vec4(vertexPosition_modelspace,1); + fragCoord = (vertexPosition_modelspace.xy+vec2(1,1))/2.0; +} diff --git a/cava/shaders/spectrogram.frag b/cava/shaders/spectrogram.frag new file mode 100644 index 0000000..18afbe3 --- /dev/null +++ b/cava/shaders/spectrogram.frag @@ -0,0 +1,53 @@ +#version 330 + +in vec2 fragCoord; +out vec4 fragColor; + +// bar values. defaults to left channels first (low to high), then right (high +// to low). +uniform float bars[512]; + +uniform int bars_count; // number of bars (left + right) (configurable) +uniform int bar_width; // bar width (configurable), not used here +uniform int bar_spacing; // space between bars (configurable) + +uniform vec3 u_resolution; // window resolution + +// colors, configurable in cava config file (r,g,b) (0.0 - 1.0) +uniform vec3 bg_color; // background color +uniform vec3 fg_color; // foreground color + +uniform int gradient_count; +uniform vec3 gradient_colors[8]; // gradient colors + +uniform sampler2D inputTexture; // Texture from the last render pass + +vec3 normalize_C(float y, vec3 col_1, vec3 col_2, float y_min, float y_max) { + // create color based on fraction of this color and next color + float yr = (y - y_min) / (y_max - y_min); + return col_1 * (1.0 - yr) + col_2 * yr; +} + +void main() { + // find which bar to use based on where we are on the y axis + int bar = int(bars_count * fragCoord.y); + float y = bars[bar]; + float band_size = 1.0 / float(bars_count); + float current_band_min = bar * band_size; + float current_band_max = (bar + 1) * band_size; + + int hist_length = 512; + float win_size = 1.0 / hist_length; + + if (fragCoord.x > 1.0 - win_size) { + + if (fragCoord.y > current_band_min && fragCoord.y < current_band_max) { + + fragColor = vec4(fg_color * y, 1.0); + } + } else { + vec2 offsetCoord = fragCoord; + offsetCoord.x += float(win_size); + fragColor = texture(inputTexture, offsetCoord); + } +} diff --git a/cava/shaders/winamp_line_style_spectrum.frag b/cava/shaders/winamp_line_style_spectrum.frag new file mode 100644 index 0000000..3bcc24a --- /dev/null +++ b/cava/shaders/winamp_line_style_spectrum.frag @@ -0,0 +1,112 @@ +#version 330 + +// Emulate the "line style" spectrum analyzer from Winamp 2. +// Try this config for a demonstration: + +/* +[general] +bar_width = 2 +bar_spacing = 0 +higher_cutoff_freq = 22000 + +[output] +method = sdl_glsl +channels = mono +fragment_shader = winamp_line_style_spectrum.frag + +[color] +background = '#000000' +gradient = 1 +gradient_color_1 = '#319C08' +gradient_color_2 = '#29CE10' +gradient_color_3 = '#BDDE29' +gradient_color_4 = '#DEA518' +gradient_color_5 = '#D66600' +gradient_color_6 = '#CE2910' + +[smoothing] +noise_reduction = 10 +*/ + +in vec2 fragCoord; +out vec4 fragColor; + +// bar values. defaults to left channels first (low to high), then right (high to low). +uniform float bars[512]; + +uniform int bars_count; // number of bars (left + right) (configurable) +uniform int bar_width; // bar width (configurable), not used here +uniform int bar_spacing; // space between bars (configurable) + +uniform vec3 u_resolution; // window resolution + +//colors, configurable in cava config file (r,g,b) (0.0 - 1.0) +uniform vec3 bg_color; // background color +uniform vec3 fg_color; // foreground color + +uniform int gradient_count; +uniform vec3 gradient_colors[8]; // gradient colors + +vec3 normalize_C(float y,vec3 col_1, vec3 col_2, float y_min, float y_max) +{ + //create color based on fraction of this color and next color + float yr = (y - y_min) / (y_max - y_min); + return col_1 * (1.0 - yr) + col_2 * yr; +} + +void main() +{ + // find which bar to use based on where we are on the x axis + float x = u_resolution.x * fragCoord.x; + int bar = int(bars_count * fragCoord.x); + + //calculate a bar size + float bar_size = u_resolution.x / bars_count; + + //the y coordinate is stretched by 4X to resemble Winamp + float y = min(bars[bar] * 4.0, 1.0); + + // make sure there is a thin line at bottom + if (y * u_resolution.y < 1.0) + { + y = 1.0 / u_resolution.y; + } + + vec4 bar_color; + + if (gradient_count == 0) + { + bar_color = vec4(fg_color,1.0); + } + else + { + //find color in the configured gradient for the top of the bar + int color = int((gradient_count - 1) * y); + + //find where on y this and next color is supposed to be + float y_min = float(color) / (gradient_count - 1.0); + float y_max = float(color + 1) / (gradient_count - 1.0); + + //make a solid color for the entire bar + bar_color = vec4(normalize_C(y, gradient_colors[color], gradient_colors[color + 1], y_min, y_max), 1.0); + } + + + //draw the bar up to current height + if (y > fragCoord.y) + { + //make some space between bars based on settings + if (x > (bar + 1) * (bar_size) - bar_spacing) + { + fragColor = vec4(bg_color,1.0); + } + else + { + fragColor = bar_color; + } + } + else + { + fragColor = vec4(bg_color,1.0); + } +} diff --git a/cava/themes/solarized_dark b/cava/themes/solarized_dark new file mode 100644 index 0000000..200057c --- /dev/null +++ b/cava/themes/solarized_dark @@ -0,0 +1,15 @@ +[color] +background = '#001e26' +foreground = '#708183' + +gradient = 1 +gradient_color_1 = '#268bd2' +gradient_color_2 = '#6c71c4' +gradient_color_3 = '#cb4b16' + +horizontal_gradient = 1 +horizontal_gradient_color_1 = '#586e75' +horizontal_gradient_color_2 = '#b58900' +horizontal_gradient_color_3 = '#839496' + +blend_direction = 'up' \ No newline at end of file diff --git a/cava/themes/tricolor b/cava/themes/tricolor new file mode 100644 index 0000000..b908137 --- /dev/null +++ b/cava/themes/tricolor @@ -0,0 +1,10 @@ +[color] +horizontal_gradient = 1 +horizontal_gradient_color_1 = '#c45161' +horizontal_gradient_color_2 = '#e094a0' +horizontal_gradient_color_3 = '#f2b6c0' +horizontal_gradient_color_4 = '#f2dde1' +horizontal_gradient_color_5 = '#cbc7d8' +horizontal_gradient_color_6 = '#8db7d2' +horizontal_gradient_color_7 = '#5e62a9' +horizontal_gradient_color_8 = '#434279' \ No newline at end of file diff --git a/environment.d/90-dms.conf b/environment.d/90-dms.conf new file mode 100644 index 0000000..5c506cb --- /dev/null +++ b/environment.d/90-dms.conf @@ -0,0 +1,2 @@ +ELECTRON_OZONE_PLATFORM_HINT=auto +TERMINAL=kitty diff --git a/fcitx5/conf/notifications.conf b/fcitx5/conf/notifications.conf new file mode 100644 index 0000000..04957ce --- /dev/null +++ b/fcitx5/conf/notifications.conf @@ -0,0 +1,3 @@ +# 隐藏通知 +HiddenNotifications= + diff --git a/fcitx5/config b/fcitx5/config new file mode 100644 index 0000000..487d932 --- /dev/null +++ b/fcitx5/config @@ -0,0 +1,83 @@ +[Hotkey] +# Enumerate when holding modifier of Toggle key +EnumerateWithTriggerKeys=True +# Enumerate Input Method Forward +EnumerateForwardKeys= +# Enumerate Input Method Backward +EnumerateBackwardKeys= +# Skip first input method while enumerating +EnumerateSkipFirst=False +# Time limit in milliseconds for triggering modifier key shortcuts +ModifierOnlyKeyTimeout=250 + +[Hotkey/TriggerKeys] +0=Control+space +1=Zenkaku_Hankaku +2=Hangul + +[Hotkey/ActivateKeys] +0=Hangul_Hanja + +[Hotkey/DeactivateKeys] +0=Hangul_Romaja + +[Hotkey/AltTriggerKeys] +0=Shift_L + +[Hotkey/EnumerateGroupForwardKeys] +0=Super+space + +[Hotkey/EnumerateGroupBackwardKeys] +0=Shift+Super+space + +[Hotkey/PrevPage] +0=Up + +[Hotkey/NextPage] +0=Down + +[Hotkey/PrevCandidate] +0=Shift+Tab + +[Hotkey/NextCandidate] +0=Tab + +[Hotkey/TogglePreedit] +0=Control+Alt+P + +[Behavior] +# Activate input method by default +ActiveByDefault=False +# Reset state on Focus In +resetStateWhenFocusIn=No +# Share Input State +ShareInputState=No +# Show preedit in application +PreeditEnabledByDefault=True +# Show Input Method Information when switch input method +ShowInputMethodInformation=True +# Show Input Method Information when changing focus +showInputMethodInformationWhenFocusIn=False +# Show compact input method information +CompactInputMethodInformation=True +# Show first input method information +ShowFirstInputMethodInformation=True +# Default Candidates per page +DefaultPageSize=5 +# Override XKB Option +OverrideXkbOption=False +# Custom XKB Option +CustomXkbOption= +# Force Enabled Addons +EnabledAddons= +# Force Disabled Addons +DisabledAddons= +# Preload input method to be used by default +PreloadInputMethod=True +# Allow input method in the password field +AllowInputMethodForPassword=False +# Show preedit text when typing password +ShowPreeditForPassword=False +# Interval of saving user data in minutes +AutoSavePeriod=30 + diff --git a/fcitx5/profile b/fcitx5/profile new file mode 100644 index 0000000..d28185b --- /dev/null +++ b/fcitx5/profile @@ -0,0 +1,23 @@ +[Groups/0] +# Group Name +Name=Default +# Layout +Default Layout=us +# Default Input Method +DefaultIM=rime + +[Groups/0/Items/0] +# Name +Name=keyboard-us +# Layout +Layout= + +[Groups/0/Items/1] +# Name +Name=rime +# Layout +Layout= + +[GroupOrder] +0=Default + diff --git a/gtk-3.0/dank-colors.css b/gtk-3.0/dank-colors.css new file mode 100644 index 0000000..cd73b65 --- /dev/null +++ b/gtk-3.0/dank-colors.css @@ -0,0 +1,48 @@ +/* +* GTK Colors +* Generated with Matugen +*/ + +/* via thairanaru on GitHub: */ + +/* Destructive colors are basically error colors */ +@define-color destructive_bg_color #f2b8b5; +@define-color destructive_fg_color #601410; +/* Follow material spec */ +@define-color error_bg_color #f2b8b5; +@define-color error_fg_color #601410; +/* Follow material spec (also I think looks nicer) */ +@define-color accent_fg_color #000000; +@define-color accent_bg_color #42a5f5; +/* Use surface instead of background */ +@define-color window_bg_color #101418; +@define-color window_fg_color #e0e2e8; +/* Make it more similar to Adwaita */ +@define-color view_bg_color #101418; +@define-color view_fg_color #e0e2e8; +@define-color headerbar_bg_color #101418; +@define-color headerbar_fg_color #e0e2e8; +@define-color sidebar_bg_color #1d2024; +@define-color sidebar_fg_color #e0e2e8; +/* There is only like one application I know that uses this, and there isn't a good way to get +a color between surface and surface container so I think just giving this surface is a good enough fallback*/ +@define-color secondary_sidebar_bg_color #101418; +@define-color secondary_sidebar_fg_color #e0e2e8; +@define-color card_bg_color #1d2024; +@define-color card_fg_color #e0e2e8; +@define-color overview_bg_color #1d2024; +@define-color overview_fg_color #e0e2e8; +@define-color popover_bg_color #1d2024; +@define-color popover_fg_color #e0e2e8; +@define-color dialog_bg_color #101418; +@define-color dialog_fg_color #e0e2e8; + +/* Backdrop/unfocused states - prevents white flash on window unfocus */ +@define-color headerbar_backdrop_color @window_bg_color; +@define-color sidebar_backdrop_color @sidebar_bg_color; +@define-color theme_unfocused_fg_color @window_fg_color; +@define-color theme_unfocused_text_color @view_fg_color; +@define-color theme_unfocused_bg_color @window_bg_color; +@define-color theme_unfocused_base_color @window_bg_color; +@define-color theme_unfocused_selected_bg_color @accent_bg_color; +@define-color theme_unfocused_selected_fg_color @accent_fg_color; diff --git a/gtk-3.0/settings.ini b/gtk-3.0/settings.ini new file mode 100644 index 0000000..68a5ef9 --- /dev/null +++ b/gtk-3.0/settings.ini @@ -0,0 +1,2 @@ +[Settings] +gtk-icon-theme-name=Adwaita diff --git a/gtk-4.0/dank-colors.css b/gtk-4.0/dank-colors.css new file mode 100644 index 0000000..cd73b65 --- /dev/null +++ b/gtk-4.0/dank-colors.css @@ -0,0 +1,48 @@ +/* +* GTK Colors +* Generated with Matugen +*/ + +/* via thairanaru on GitHub: */ + +/* Destructive colors are basically error colors */ +@define-color destructive_bg_color #f2b8b5; +@define-color destructive_fg_color #601410; +/* Follow material spec */ +@define-color error_bg_color #f2b8b5; +@define-color error_fg_color #601410; +/* Follow material spec (also I think looks nicer) */ +@define-color accent_fg_color #000000; +@define-color accent_bg_color #42a5f5; +/* Use surface instead of background */ +@define-color window_bg_color #101418; +@define-color window_fg_color #e0e2e8; +/* Make it more similar to Adwaita */ +@define-color view_bg_color #101418; +@define-color view_fg_color #e0e2e8; +@define-color headerbar_bg_color #101418; +@define-color headerbar_fg_color #e0e2e8; +@define-color sidebar_bg_color #1d2024; +@define-color sidebar_fg_color #e0e2e8; +/* There is only like one application I know that uses this, and there isn't a good way to get +a color between surface and surface container so I think just giving this surface is a good enough fallback*/ +@define-color secondary_sidebar_bg_color #101418; +@define-color secondary_sidebar_fg_color #e0e2e8; +@define-color card_bg_color #1d2024; +@define-color card_fg_color #e0e2e8; +@define-color overview_bg_color #1d2024; +@define-color overview_fg_color #e0e2e8; +@define-color popover_bg_color #1d2024; +@define-color popover_fg_color #e0e2e8; +@define-color dialog_bg_color #101418; +@define-color dialog_fg_color #e0e2e8; + +/* Backdrop/unfocused states - prevents white flash on window unfocus */ +@define-color headerbar_backdrop_color @window_bg_color; +@define-color sidebar_backdrop_color @sidebar_bg_color; +@define-color theme_unfocused_fg_color @window_fg_color; +@define-color theme_unfocused_text_color @view_fg_color; +@define-color theme_unfocused_bg_color @window_bg_color; +@define-color theme_unfocused_base_color @window_bg_color; +@define-color theme_unfocused_selected_bg_color @accent_bg_color; +@define-color theme_unfocused_selected_fg_color @accent_fg_color; diff --git a/gtk-4.0/settings.ini b/gtk-4.0/settings.ini new file mode 100644 index 0000000..68a5ef9 --- /dev/null +++ b/gtk-4.0/settings.ini @@ -0,0 +1,2 @@ +[Settings] +gtk-icon-theme-name=Adwaita diff --git a/kitty/dank-tabs.conf b/kitty/dank-tabs.conf new file mode 100644 index 0000000..aed9002 --- /dev/null +++ b/kitty/dank-tabs.conf @@ -0,0 +1,23 @@ +tab_bar_edge top +tab_bar_style powerline +tab_powerline_style slanted +tab_bar_align left +tab_bar_min_tabs 2 +tab_bar_margin_width 0.0 +tab_bar_margin_height 2.5 1.5 +tab_bar_margin_color #101418 + +tab_bar_background #101418 + +active_tab_foreground #000000 +active_tab_background #42a5f5 +active_tab_font_style bold + +inactive_tab_foreground #c2c7cf +inactive_tab_background #101418 +inactive_tab_font_style normal + +tab_activity_symbol " ● " + +tab_title_template "{fmt.fg.red}{bell_symbol}{activity_symbol}{fmt.fg.tab}{title[:30]}{title[30:] and '…'} [{index}]" +active_tab_title_template "{fmt.fg.red}{bell_symbol}{activity_symbol}{fmt.fg.tab}{title[:30]}{title[30:] and '…'} [{index}]" diff --git a/kitty/dank-theme.conf b/kitty/dank-theme.conf new file mode 100644 index 0000000..4a4212f --- /dev/null +++ b/kitty/dank-theme.conf @@ -0,0 +1,25 @@ +cursor #e0e2e8 +cursor_text_color #c2c7cf + +foreground #e0e2e8 +background #101418 +selection_foreground #000000 +selection_background #8ab4f8 +url_color #42a5f5 + +color0 #101418 +color1 #ff3270 +color2 #42f558 +color3 #fff332 +color4 #1c8de8 +color5 #003e71 +color6 #42a5f5 +color7 #e8f4ff +color8 #8d979f +color9 #ff739e +color10 #7cff8d +color11 #fff77c +color12 #60b8ff +color13 #7cc4ff +color14 #abd9ff +color15 #f5faff diff --git a/kitty/kitty.conf b/kitty/kitty.conf index e4284c8..e5a3487 100644 --- a/kitty/kitty.conf +++ b/kitty/kitty.conf @@ -1,28 +1,45 @@ -shell zsh +# Font Configuration +font_size 12.0 -# 字体配置(Nerd Font) -font_family JetBrainsMono Nerd Font +# Window Configuration +window_padding_width 12 +background_opacity 1.0 +background_blur 32 +hide_window_decorations yes + +# Cursor Configuration +cursor_shape block +cursor_blink_interval 1 + +# Scrollback +scrollback_lines 3000 + +# Terminal features +copy_on_select yes +strip_trailing_spaces smart + +# Key bindings for common actions +map ctrl+shift+n new_window +map ctrl+t new_tab +map ctrl+plus change_font_size all +1.0 +map ctrl+minus change_font_size all -1.0 +map ctrl+0 change_font_size all 0 + +# Tab configuration +tab_bar_style powerline +tab_bar_align left + +# Shell integration +shell_integration enabled + +# Dank color generation +include dank-tabs.conf +include dank-theme.conf + + +# BEGIN_KITTY_FONTS +font_family family="Maple Mono NF CN" bold_font auto italic_font auto bold_italic_font auto -# font_size 12.0 - -# 背景透明度(0.0 完全透明 - 1.0 完全不透明) -background_opacity 0.85 - -# 关闭窗口时无需二次确认 -confirm_os_window_close 0 - -# 光标样式 -cursor_shape beam -cursor_blink_interval 0.5 -cursor_stop_blinking_after 15.0 - -# 光标拖尾动画 -cursor_trail 1 -cursor_trail_decay 0.1 0.4 -cursor_trail_start_threshold 2 - -# 光标颜色(Catppuccin Mocha) -cursor #f5e0dc -cursor_text_color #1e1e2e +# END_KITTY_FONTS diff --git a/niri/config.kdl b/niri/config.kdl new file mode 100644 index 0000000..fb1d5c7 --- /dev/null +++ b/niri/config.kdl @@ -0,0 +1,317 @@ +// This config is in the KDL format: https://kdl.dev +// "/-" comments out the following node. +// Check the wiki for a full description of the configuration: +// https://github.com/YaLTeR/niri/wiki/Configuration:-Introduction +config-notification { + disable-failed +} +// Outputs from existing configuration + +output "eDP-1" { + mode "2560x1600@165.004" + scale 1.5 + transform "normal" + position x=0 y=0 +} + +/-output "eDP-1" { + // Uncomment this line to disable this output. + // off + + // Resolution and, optionally, refresh rate of the output. + // The format is "x" or "x@". + // 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=1280 y=0 +} + + +gestures { + hot-corners { + off + } +} + +// Input device configuration. +// Find the full list of options on the wiki: +// https://github.com/YaLTeR/niri/wiki/Configuration:-Input +input { + keyboard { + xkb { + // You can set rules, model, layout, variant and options. + // For more information, see xkeyboard-config(7). + + // For example: + // layout "us,ru" + // options "grp:win_space_toggle,compose:ralt,ctrl:nocaps" + + // If this section is empty, niri will fetch xkb settings + // from org.freedesktop.locale1. You can control these using + // localectl set-x11-keymap. + } + + // Enable numlock on startup, omitting this setting disables it. + numlock + } + + // Next sections include libinput settings. + // Omitting settings disables them, or leaves them at their default values. + // All commented-out settings here are examples, not defaults. + touchpad { + // off + tap + // dwt + // dwtp + // drag false + // drag-lock + natural-scroll + // accel-speed 0.2 + // accel-profile "flat" + // scroll-method "two-finger" + // disabled-on-external-mouse + } + + mouse { + // off + // natural-scroll + // accel-speed 0.2 + // accel-profile "flat" + // scroll-method "no-scroll" + } + + trackpoint { + // off + // natural-scroll + // accel-speed 0.2 + // accel-profile "flat" + // scroll-method "on-button-down" + // scroll-button 273 + // scroll-button-lock + // middle-emulation + } + + // Uncomment this to make the mouse warp to the center of newly focused windows. + // warp-mouse-to-focus + + // Focus windows and outputs automatically when moving the mouse into them. + // Setting max-scroll-amount="0%" makes it work only on windows already fully on screen. + // focus-follows-mouse max-scroll-amount="0%" +} +// 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 "/-"! + +// Settings that influence how windows are positioned and sized. +// Find more information on the wiki: +// https://github.com/YaLTeR/niri/wiki/Configuration:-Layout +layout { + // Set gaps around windows in logical pixels. + background-color "transparent" + // When to center a column when changing focus, options are: + // - "never", default behavior, focusing an off-screen column will keep at the left + // or right edge of the screen. + // - "always", the focused column will always be centered. + // - "on-overflow", focusing a column will center it if it doesn't fit + // together with the previously focused column. + center-focused-column "never" + // You can customize the widths that "switch-preset-column-width" (Mod+R) toggles between. + preset-column-widths { + // Proportion sets the width as a fraction of the output width, taking gaps into account. + // For example, you can perfectly fit four windows sized "proportion 0.25" on an output. + // The default preset widths are 1/3, 1/2 and 2/3 of the output. + proportion 0.33333 + proportion 0.5 + proportion 0.66667 + // Fixed sets the width in logical pixels exactly. + // fixed 1920 + } + // You can also customize the heights that "switch-preset-window-height" (Mod+Shift+R) toggles between. + // preset-window-heights { } + // You can change the default width of the new windows. + default-column-width { proportion 0.5; } + // If you leave the brackets empty, the windows themselves will decide their initial width. + // default-column-width {} + // By default focus ring and border are rendered as a solid background rectangle + // behind windows. That is, they will show up through semitransparent windows. + // This is because windows using client-side decorations can have an arbitrary shape. + // + // If you don't like that, you should uncomment `prefer-no-csd` below. + // Niri will draw focus ring and border *around* windows that agree to omit their + // client-side decorations. + // + // Alternatively, you can override it with a window rule called + // `draw-border-with-background`. + border { + off + width 4 + active-color "#707070" // Neutral gray + inactive-color "#d0d0d0" // Light gray + urgent-color "#cc4444" // Softer red + } + shadow { + softness 30 + spread 5 + offset x=0 y=5 + color "#0007" + } + struts { + } +} +layer-rule { + match namespace="^quickshell$" + place-within-backdrop true +} +overview { + workspace-shadow { + off + } +} +// 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. +// This line starts waybar, a commonly used bar for Wayland compositors. +environment { + XDG_CURRENT_DESKTOP "niri" +} +hotkey-overlay { + skip-at-startup +} +prefer-no-csd +screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png" +animations { + workspace-switch { + spring damping-ratio=0.80 stiffness=523 epsilon=0.0001 + } + window-open { + duration-ms 150 + curve "ease-out-expo" + } + window-close { + duration-ms 150 + curve "ease-out-quad" + } + horizontal-view-movement { + spring damping-ratio=0.85 stiffness=423 epsilon=0.0001 + } + window-movement { + spring damping-ratio=0.75 stiffness=323 epsilon=0.0001 + } + window-resize { + spring damping-ratio=0.85 stiffness=423 epsilon=0.0001 + } + config-notification-open-close { + spring damping-ratio=0.65 stiffness=923 epsilon=0.001 + } + screenshot-ui-open { + duration-ms 200 + curve "ease-out-quad" + } + overview-open-close { + spring damping-ratio=0.85 stiffness=800 epsilon=0.0001 + } +} +// Window rules let you adjust behavior for individual windows. +// Find more information on the wiki: +// https://github.com/YaLTeR/niri/wiki/Configuration:-Window-Rules +// Work around WezTerm's initial configure bug +// by setting an empty default-column-width. +window-rule { + // This regular expression is intentionally made as specific as possible, + // since this is the default config, and we want no false positives. + // You can get away with just app-id="wezterm" if you want. + match app-id=r#"^org\.wezfurlong\.wezterm$"# + default-column-width {} +} +window-rule { + match app-id=r#"^org\.gnome\."# + draw-border-with-background false + geometry-corner-radius 12 + clip-to-geometry true +} +window-rule { + match app-id=r#"^gnome-control-center$"# + match app-id=r#"^pavucontrol$"# + match app-id=r#"^nm-connection-editor$"# + default-column-width { proportion 0.5; } + open-floating false +} +window-rule { + match app-id=r#"^org\.gnome\.Calculator$"# + match app-id=r#"^gnome-calculator$"# + match app-id=r#"^galculator$"# + match app-id=r#"^blueman-manager$"# + match app-id=r#"^org\.gnome\.Nautilus$"# + match app-id=r#"^xdg-desktop-portal$"# + open-floating true +} +window-rule { + match app-id=r#"^steam$"# title=r#"^notificationtoasts_\d+_desktop$"# + default-floating-position x=10 y=10 relative-to="bottom-right" + open-focused false +} +window-rule { + match app-id=r#"^org\.wezfurlong\.wezterm$"# + match app-id="Alacritty" + match app-id="zen" + match app-id="com.mitchellh.ghostty" + match app-id="kitty" + draw-border-with-background false +} +window-rule { + match app-id=r#"firefox$"# title="^Picture-in-Picture$" + match app-id="zoom" + open-floating true +} +// Open dms windows as floating by default +window-rule { + match app-id=r#"org.quickshell$"# + match app-id=r#"com.danklinux.dms$"# + open-floating true +} +debug { + honor-xdg-activation-with-invalid-serial +} + +// Override to disable super+tab +recent-windows { + binds { + Alt+Tab { next-window scope="output"; } + Alt+Shift+Tab { previous-window scope="output"; } + Alt+grave { next-window filter="app-id"; } + Alt+Shift+grave { previous-window filter="app-id"; } + } +} + +// Include dms files +include "dms/colors.kdl" +include "dms/layout.kdl" +include "dms/alttab.kdl" +include "dms/binds.kdl" +include "dms/outputs.kdl" +include "dms/cursor.kdl" + +include "dms/windowrules.kdl" diff --git a/niri/dms/alttab.kdl b/niri/dms/alttab.kdl new file mode 100644 index 0000000..091ea07 --- /dev/null +++ b/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 12 + } + } diff --git a/niri/dms/binds.kdl b/niri/dms/binds.kdl new file mode 100644 index 0000000..8f10c01 --- /dev/null +++ b/niri/dms/binds.kdl @@ -0,0 +1,221 @@ +binds { + // === System & Overview === + Mod+D repeat=false { toggle-overview; } + Mod+Tab repeat=false { toggle-overview; } + Mod+Shift+Slash { show-hotkey-overlay; } + + // === Application Launchers === + Mod+T hotkey-overlay-title="Open Terminal" { spawn "kitty"; } + Mod+Space hotkey-overlay-title="Application Launcher" { + spawn "dms" "ipc" "call" "spotlight" "toggle"; + } + Mod+V hotkey-overlay-title="Clipboard Manager" { + spawn "dms" "ipc" "call" "clipboard" "toggle"; + } + Mod+M hotkey-overlay-title="Task Manager" { + spawn "dms" "ipc" "call" "processlist" "focusOrToggle"; + } + + Super+X hotkey-overlay-title="Power Menu: Toggle" { spawn "dms" "ipc" "call" "powermenu" "toggle"; } + Mod+Comma hotkey-overlay-title="Settings" { + spawn "dms" "ipc" "call" "settings" "focusOrToggle"; + } + Mod+Y hotkey-overlay-title="Browse Wallpapers" { + spawn "dms" "ipc" "call" "dankdash" "wallpaper"; + } + Mod+N hotkey-overlay-title="Notification Center" { spawn "dms" "ipc" "call" "notifications" "toggle"; } + Mod+Shift+N hotkey-overlay-title="Notepad" { spawn "dms" "ipc" "call" "notepad" "toggle"; } + + // === Security === + Mod+Alt+L hotkey-overlay-title="Lock Screen" { + spawn "dms" "ipc" "call" "lock" "lock"; + } + Mod+Shift+E { quit; } + Ctrl+Alt+Delete hotkey-overlay-title="Task Manager" { + spawn "dms" "ipc" "call" "processlist" "focusOrToggle"; + } + + // === 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" ""; + } + + // === Window Management === + Mod+Q repeat=false { close-window; } + Mod+F { maximize-column; } + Mod+Shift+F { fullscreen-window; } + Mod+Shift+T { toggle-window-floating; } + Mod+Shift+V { switch-focus-between-floating-and-tiling; } + Mod+W { toggle-column-tabbed-display; } + Mod+Shift+W hotkey-overlay-title="Create window rule" { spawn "dms" "ipc" "call" "window-rules" "toggle"; } + + // === Focus Navigation === + Mod+Left { focus-column-left; } + Mod+Down { focus-window-down; } + Mod+Up { focus-window-up; } + Mod+Right { focus-column-right; } + Mod+H { focus-column-left; } + Mod+J { focus-window-down; } + Mod+K { focus-window-up; } + Mod+L { focus-column-right; } + + // === Window Movement === + Mod+Shift+Left { move-column-left; } + Mod+Shift+Down { move-window-down; } + Mod+Shift+Up { move-window-up; } + Mod+Shift+Right { move-column-right; } + Mod+Shift+H { move-column-left; } + Mod+Shift+J { move-window-down; } + Mod+Shift+K { move-window-up; } + Mod+Shift+L { move-column-right; } + + // === Column Navigation === + Mod+Home { focus-column-first; } + Mod+End { focus-column-last; } + Mod+Ctrl+Home { move-column-to-first; } + Mod+Ctrl+End { move-column-to-last; } + + // === Monitor Navigation === + Mod+Ctrl+Left { focus-monitor-left; } + //Mod+Ctrl+Down { focus-monitor-down; } + //Mod+Ctrl+Up { focus-monitor-up; } + Mod+Ctrl+Right { focus-monitor-right; } + Mod+Ctrl+H { focus-monitor-left; } + Mod+Ctrl+J { focus-monitor-down; } + Mod+Ctrl+K { focus-monitor-up; } + Mod+Ctrl+L { focus-monitor-right; } + + // === Move to Monitor === + Mod+Shift+Ctrl+Left { move-column-to-monitor-left; } + Mod+Shift+Ctrl+Down { move-column-to-monitor-down; } + Mod+Shift+Ctrl+Up { move-column-to-monitor-up; } + Mod+Shift+Ctrl+Right { move-column-to-monitor-right; } + Mod+Shift+Ctrl+H { move-column-to-monitor-left; } + Mod+Shift+Ctrl+J { move-column-to-monitor-down; } + Mod+Shift+Ctrl+K { move-column-to-monitor-up; } + Mod+Shift+Ctrl+L { move-column-to-monitor-right; } + + // === Workspace Navigation === + Mod+Page_Down { focus-workspace-down; } + Mod+Page_Up { focus-workspace-up; } + Mod+U { focus-workspace-down; } + Mod+I { focus-workspace-up; } + Mod+Ctrl+Down { move-column-to-workspace-down; } + Mod+Ctrl+Up { move-column-to-workspace-up; } + Mod+Ctrl+U { move-column-to-workspace-down; } + Mod+Ctrl+I { move-column-to-workspace-up; } + + // === Workspace Management === + Ctrl+Shift+R hotkey-overlay-title="Rename Workspace" { + spawn "dms" "ipc" "call" "workspace-rename" "open"; + } + + // === Move Workspaces === + Mod+Shift+Page_Down { move-workspace-down; } + Mod+Shift+Page_Up { move-workspace-up; } + Mod+Shift+U { move-workspace-down; } + Mod+Shift+I { move-workspace-up; } + + // === Mouse Wheel Navigation === + Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; } + Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; } + Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; } + Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; } + + Mod+WheelScrollRight { focus-column-right; } + Mod+WheelScrollLeft { focus-column-left; } + Mod+Ctrl+WheelScrollRight { move-column-right; } + Mod+Ctrl+WheelScrollLeft { 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; } + + // === Numbered Workspaces === + Mod+1 { focus-workspace 1; } + Mod+2 { focus-workspace 2; } + Mod+3 { focus-workspace 3; } + Mod+4 { focus-workspace 4; } + Mod+5 { focus-workspace 5; } + Mod+6 { focus-workspace 6; } + Mod+7 { focus-workspace 7; } + Mod+8 { focus-workspace 8; } + Mod+9 { focus-workspace 9; } + + // === Move to Numbered Workspaces === + Mod+Shift+1 { move-column-to-workspace 1; } + Mod+Shift+2 { move-column-to-workspace 2; } + Mod+Shift+3 { move-column-to-workspace 3; } + Mod+Shift+4 { move-column-to-workspace 4; } + Mod+Shift+5 { move-column-to-workspace 5; } + Mod+Shift+6 { move-column-to-workspace 6; } + Mod+Shift+7 { move-column-to-workspace 7; } + Mod+Shift+8 { move-column-to-workspace 8; } + Mod+Shift+9 { move-column-to-workspace 9; } + + // === Column Management === + Mod+BracketLeft { consume-or-expel-window-left; } + Mod+BracketRight { consume-or-expel-window-right; } + Mod+Period { expel-window-from-column; } + + // === Sizing & Layout === + Mod+R { switch-preset-column-width; } + Mod+Shift+R { switch-preset-window-height; } + Mod+Ctrl+R { reset-window-height; } + Mod+Ctrl+F { expand-column-to-available-width; } + Mod+C { center-column; } + Mod+Ctrl+C { center-visible-columns; } + + // === Manual Sizing === + Mod+Minus { set-column-width "-10%"; } + Mod+Equal { set-column-width "+10%"; } + Mod+Shift+Minus { set-window-height "-10%"; } + Mod+Shift+Equal { set-window-height "+10%"; } + + // === Screenshots === + XF86Launch1 { screenshot; } + Ctrl+XF86Launch1 { screenshot-screen; } + Alt+XF86Launch1 { screenshot-window; } + Print { screenshot; } + Ctrl+Print { screenshot-screen; } + Alt+Print { screenshot-window; } + // === System Controls === + Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; } + Mod+Shift+P { power-off-monitors; } +} diff --git a/niri/dms/colors.kdl b/niri/dms/colors.kdl new file mode 100644 index 0000000..7e6101c --- /dev/null +++ b/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 "#42a5f5" + inactive-color "#8c9199" + urgent-color "#f2b8b5" + } + + border { + active-color "#42a5f5" + inactive-color "#8c9199" + urgent-color "#f2b8b5" + } + + shadow { + color "#00000070" + } + + tab-indicator { + active-color "#42a5f5" + inactive-color "#8c9199" + urgent-color "#f2b8b5" + } + + insert-hint { + color "#42a5f580" + } +} + +recent-windows { + highlight { + active-color "#0d47a1" + urgent-color "#f2b8b5" + } +} diff --git a/niri/dms/cursor.kdl b/niri/dms/cursor.kdl new file mode 100644 index 0000000..81d21f0 --- /dev/null +++ b/niri/dms/cursor.kdl @@ -0,0 +1,11 @@ +// ! DO NOT EDIT ! +// ! AUTO-GENERATED BY DMS ! +// ! CHANGES WILL BE OVERWRITTEN ! +// ! PLACE YOUR CUSTOM CONFIGURATION ELSEWHERE ! + +cursor { + xcursor-theme "breeze_cursors" + xcursor-size 24 + hide-when-typing + hide-after-inactive-ms 5000 +} \ No newline at end of file diff --git a/niri/dms/layout.kdl b/niri/dms/layout.kdl new file mode 100644 index 0000000..431afbf --- /dev/null +++ b/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 4 + + border { + width 2 + } + + focus-ring { + width 2 + } + } + window-rule { + geometry-corner-radius 12 + clip-to-geometry true + tiled-state true + draw-border-with-background false + } diff --git a/niri/dms/outputs.kdl b/niri/dms/outputs.kdl new file mode 100644 index 0000000..41ff35f --- /dev/null +++ b/niri/dms/outputs.kdl @@ -0,0 +1,31 @@ +/-output "eDP-1" { + // Uncomment this line to disable this output. + // off + + // Resolution and, optionally, refresh rate of the output. + // The format is "x" or "x@". + // 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=1280 y=0 +} + diff --git a/niri/dms/windowrules.kdl b/niri/dms/windowrules.kdl new file mode 100644 index 0000000..e69de29 diff --git a/niri/dms/wpblur.kdl b/niri/dms/wpblur.kdl new file mode 100644 index 0000000..3d58802 --- /dev/null +++ b/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/nvim/lazy-lock.json b/nvim/lazy-lock.json index a8b2f97..111e47a 100644 --- a/nvim/lazy-lock.json +++ b/nvim/lazy-lock.json @@ -1,17 +1,17 @@ { "blink.cmp": { "branch": "main", "commit": "78336bc89ee5365633bcf754d93df01678b5c08f" }, - "cmake-tools.nvim": { "branch": "master", "commit": "98cdc162572a7b77733030425d8d045d68f2a1fd" }, + "cmake-tools.nvim": { "branch": "master", "commit": "22859d754b5de738cfe9945e0910729f63deefd0" }, "conform.nvim": { "branch": "master", "commit": "619363c30309d29ffa631e67c8183f2a72caa373" }, "diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" }, - "gitsigns.nvim": { "branch": "main", "commit": "25050e4ed39e628282831d4cbecb1850454ce915" }, + "gitsigns.nvim": { "branch": "main", "commit": "2038c666bd9d8a0b7349a0b6ee00dc83104b9ecf" }, "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "0a695750d747db1e7e70bcf0267ef8951c95fc83" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "50bf3871b539896bd0650b882f6e6b467cc1c1eb" }, "mason-nvim-dap.nvim": { "branch": "main", "commit": "9a10e096703966335bd5c46c8c875d5b0690dade" }, - "mason.nvim": { "branch": "main", "commit": "16ba83bfc8a25f52bb545134f5bee082b195c460" }, + "mason.nvim": { "branch": "main", "commit": "2a6940af80375532e5e9e7c1f2fc6319a1b7a69d" }, "nvim-autopairs": { "branch": "master", "commit": "7b9923abad60b903ece7c52940e1321d39eccc79" }, - "nvim-dap": { "branch": "master", "commit": "531771530d4f82ad2d21e436e3cc052d68d7aebb" }, + "nvim-dap": { "branch": "master", "commit": "9e848e09a697ee95302a3ef2dd43fd6eb709e570" }, "nvim-dap-ui": { "branch": "master", "commit": "1a66cabaa4a4da0be107d5eda6d57242f0fe7e49" }, - "nvim-lspconfig": { "branch": "master", "commit": "ed19590a3a9792901553c388d1aadafce012f80d" }, + "nvim-lspconfig": { "branch": "master", "commit": "3371bf298c1f56efc26771ee961f461176958fb5" }, "nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" }, "nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" }, "nvim-web-devicons": { "branch": "master", "commit": "dfbfaa967a6f7ec50789bead7ef87e336c1fa63c" }, diff --git a/nvim/lua/plugins/dap.lua b/nvim/lua/plugins/dap.lua index 8caf94b..2684c29 100644 --- a/nvim/lua/plugins/dap.lua +++ b/nvim/lua/plugins/dap.lua @@ -15,9 +15,12 @@ return { local dapui = require("dapui") -- 断点图标 - vim.fn.sign_define("DapBreakpoint", { text = "●", texthl = "DapBreakpoint", linehl = "", numhl = "" }) - vim.fn.sign_define("DapBreakpointCondition", { text = "◆", texthl = "DapBreakpointCondition", linehl = "", numhl = "" }) - vim.fn.sign_define("DapStopped", { text = "▶", texthl = "DapStopped", linehl = "CursorLine", numhl = "" }) + vim.fn.sign_define("DapBreakpoint", + { text = "●", texthl = "DapBreakpoint", linehl = "", numhl = "" }) + vim.fn.sign_define("DapBreakpointCondition", + { text = "◆", texthl = "DapBreakpointCondition", linehl = "", numhl = "" }) + vim.fn.sign_define("DapStopped", + { text = "▶", texthl = "DapStopped", linehl = "CursorLine", numhl = "" }) -- dap-ui 布局 dapui.setup({ @@ -44,13 +47,13 @@ return { }) -- 调试会话自动打开/关闭 UI - dap.listeners.before.attach.dapui_config = function() dapui.open() end - dap.listeners.before.launch.dapui_config = function() dapui.open() end + dap.listeners.before.attach.dapui_config = function() dapui.open() end + dap.listeners.before.launch.dapui_config = function() dapui.open() end dap.listeners.before.event_terminated.dapui_config = function() dapui.close() end - dap.listeners.before.event_exited.dapui_config = function() dapui.close() end + dap.listeners.before.event_exited.dapui_config = function() dapui.close() end -- codelldb 适配器(Mason 安装路径) - dap.adapters.codelldb = { + dap.adapters.codelldb = { type = "server", port = "${port}", executable = { @@ -60,7 +63,7 @@ return { } -- C/C++ 调试配置(非 CMake 项目,CMake 项目用 rd) - dap.configurations.c = { + dap.configurations.c = { { name = "Launch", type = "codelldb", @@ -73,7 +76,7 @@ return { args = {}, }, } - dap.configurations.cpp = dap.configurations.c + dap.configurations.cpp = dap.configurations.c end, }, diff --git a/nvim/lua/plugins/lsp.lua b/nvim/lua/plugins/lsp.lua index 782490a..499eff1 100644 --- a/nvim/lua/plugins/lsp.lua +++ b/nvim/lua/plugins/lsp.lua @@ -16,10 +16,10 @@ return { dependencies = { "williamboman/mason.nvim" }, opts = { ensure_installed = { - "lua_ls", -- Lua - "bashls", -- Bash - "clangd", -- C/C++ - "neocmake", -- CMake + "lua_ls", -- Lua + "bashls", -- Bash + "clangd", -- C/C++ + "neocmake", -- CMake }, }, }, diff --git a/qt5ct/qt5ct.conf b/qt5ct/qt5ct.conf new file mode 100644 index 0000000..fb1baf7 --- /dev/null +++ b/qt5ct/qt5ct.conf @@ -0,0 +1,2 @@ +[Appearance] +icon_theme=Adwaita diff --git a/qt6ct/qt6ct.conf b/qt6ct/qt6ct.conf new file mode 100644 index 0000000..fb1baf7 --- /dev/null +++ b/qt6ct/qt6ct.conf @@ -0,0 +1,2 @@ +[Appearance] +icon_theme=Adwaita