Merge NothingLess improvements into Ambxst#196
Open
leriart wants to merge 3 commits into
Open
Conversation
0866a21 to
a29a62c
Compare
…g-drop, per-monitor positioning, animation fixes
- Reemplazados assets de branding con originales de Ambxst - Renombrado NothingLess → Ambxst en todo el codigo - README original de Ambxst - Conservados presets de Leriart (Dot Matrix, Nothing, Pure Monochrome, Minimal) - Conservadas todas las features nuevas: Free Layout, Island Mode, Task Tray, M3 Animations, Monitor Config, Snap Assistant, etc. - Splash con logo de Ambxst
- MonitorCard: remove monitorSyncDebounce restart from onMonitorsChanged to break the infinite sync -> reload -> monitorsChanged loop - CompositorConfig: remove redundant globalStateConnections that caused double dispatch, double file write, and double axctl reload - CompositorTomlWriter: remove stale [[monitors]] generation; the monitors_writer.py now writes correct data to axctl.toml - CompositorTomlWriter: preserve existing [[monitors]] sections when writing toml to avoid nuking monitors_writer.py's changes - MonitorsWriter: stop calling CompositorTomlWriter.writeTomlFile() after sync, which overwrote the entire toml file - monitors_writer.py: add write_axctl_monitors() to write correct [[monitors]] to axctl.toml directly - AxctlService: bypass axctl v0.0.19 broken 'window move-to-workspace-silent' subcommand; use hyprctl dispatch directly instead - Overview + ScrollingWorkspace: replace instant Qt.callLater refresh after drag-drop with a 200ms delayed timer to let hyprctl process moves - All comments in English, no emojis
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This PR merges performance and feature improvements originally developed in the NothingLess fork back into Ambxst. All improvements are fully rebranded, with zero references to NothingLess remaining. The changes are purely additive and compatible with upstream.
What's new
Free Layout — Windows-style floating desktop
New layout mode that floats all windows with edge snap, grid alignment, show desktop, and Smart Resize Anchors. Switchable from the dashboard alongside Dwindle, Master, and Scrolling.
compositor.js: 7 new properties (freeGridSize,freeSnapSensitivity,freeSnapEdges,freeSnapCenter,freeSnapGaps,freeTileByDefault,freeMaximizedByDefault)CompositorConfig.qml:windowrule floaton activation,floatAllProcess/tileAllProcessfor existing windowsKeybindActions.js: 12 snap actions (left, right, top, bottom, center, maximize, restore, 4 quarters)Dynamic Island
Compact notification and metrics display embedded in the bar, activated when
barMode=dynamicandnotchTheme=island.IslandContent.qml— island pill containing clock, media, metricsNotch.qml— scale animation (0.9→1.0), island-bar merge, compact idle height (36px)Task tray
Full system tray with icon show/hide, context menus, and dynamic recalc.
TaskTray.qml,tasktray/qmldir— new modulebar.js:taskTrayEnabled,taskTrayShowToggle,taskTrayAlwaysVisibleM3 Animation System
Complete Material 3 animation profiles with easing curves, durations, and convenience helpers. Three profiles: M3 (default), Windows Classic, macOS.
Anim.qml— brand new singletonConfig.animDurationtoAnim.standardNormal/Anim.easing()Dynamic Color (Material You)
Wallpaper-based color quantization via GStreamer. Generates M3 color aliases (
onSurface,onPrimaryContainer, etc.) and adjusts vibrancy dynamically.Colors.qml—wallpaperQuantizer,_vibrancyAlphaStyling.qml— M3 Typography system (m3HeadlineLarge,m3TitleMedium, etc.)Expanded compositor configuration
From ~25 properties to 100+, covering:
activeOpacity,inactiveOpacity,fullscreenOpacity,dimInactive,dimStrength,dimAround,dimSpecialresizeOnBorder,extendBorderGrabArea,hoverIconOnBorder,roundedPowersnapEnabled,snapWindowGap,snapMonitorGap,snapBorderOverlap,snapRespectGapsanimationsEnabledsmartResizeAnchorstoggleConfig sync with hyprland.conf/lua
sync-hyprland-conf.pyreads compositor.json and binds.json, generating native hyprland.conf and hyprland.lua with proper 0.53+ windowrule syntax. Also syncs axctl.toml for daemon consistency.Monitor configuration panel
Full GUI for monitor setup: drag-and-drop arrangement, resolution, refresh rate, scale, transform. Backed by
monitors_writer.pyandMonitorsWriter.qml.Axctl daemon health system
configReloadedevent detection-c <configPath>flagmonitorsUpdated(),subscribeReady(),subscribeFailed(),configReloaded()signalsCLI expansion
9 → 20+ commands:
reload,quit,screen on|off,suspend,VolumeUp/Down/Mute,MicMute,Caffeine,Gamemode,Nightlight,run <module>. Install now supports--luaand--confdual mode.Overview improvements
hyprctlrefreshNew presets
New services
IpcPool.qmlMonitorsWriter.qmlmonitors_writer.pyPerMonitorConfig.qmlWlrToplevelMapper.qmlDeepSeekApiStrategy.qmlBatteryAlertService.qmlNew scripts
sync-hyprland-conf.pymonitors_writer.pyambxst-fpsapply-config.shmangohud-patch/build-mangohud.shtoggle-metrics.shambxst-resizebluetooth_helper.pyfps_monitor.pyfps_preload.cgsr-fps.shPerformance optimizations
layer.enabledonly when content visible (was always on)Housekeeping
Files changed
BatteryAlertService.qml,Calculator.qml,DeepSeekApiStrategy.qml,IpcPool.qml,MonitorsWriter.qml,MusicRecognizer.qml,PerMonitorConfig.qml,ScreenTranslation.qml,WlrToplevelMapper.qmlIslandContent.qml,TaskTray.qml,tasktray/qmldir,clock/qmldir,systray/qmldir,workspaces/qmldir,Bar.qmlStateLayer.qml,Surface.qml,RegionPicker.qmlAnim.qmlMonitorArrangementView.qml,MonitorCard.qml,MonitorSettingsForm.qml,MonitorsPanel.qml,ConfigToggleRow.qml,MetricsConfigPanel.qmlinterpol.frag/.vert/.qsbassets/colors/Nothing/(4 files)MaterialSymbolsRounded-Variable.ttf,Ndot-57-Aligned.ttfambxst-fps,ambxst-resize,apply-config.sh,bluetooth_helper.py,fps_monitor.py,fps_preload.c,gsr-fps.sh,mangohud-patch/build-mangohud.sh,monitors_writer.py,sync-hyprland-conf.py,toggle-metrics.shhyprland.example.confflake.nix,flake.lockRemoved files:
mpvpaper.sh,MpvShaderGenerator.js(replaced by QtMultimedia)Does this change any existing behavior?
ambxst-fps+ notch metrics overlaymonitors_writer.pywithhyprctllive reloadConfig.animDurationglobalsync-hyprland-conf.pyauto-generates hyprland.conf/lua