feat: bury offline mode, ship antergos-layan-theme

remember when i thought an offline installer was a good idea?
a pre-built squashfs that still needed internet to install DEs?
"offline" in name only. it was a lie. a beautiful, naive lie.

so i killed it. ripped out the mode picker, the connectivity check,
the whole AskMode() circus. calamares-next now just shows a notice
saying "yeah that wasnt actually offline" and launches directly
into online mode. no more pretending.

also fixed the QML nav button because having a greyed out "Next"
on the last page is terrible UX. now it says "Done" and quits.
youre welcome.

and since we nuked the offline mode, might as well make the
online mode look fucking spectacular. enter antergos-layan-theme:

- kvantum theme because your apps deserve better than qt dreck
- sddm theme (AntergosDark-Layan) for a sexy login screen
- every plasma plasmoid from the rice (panel colorizer, netspeed,
  shutdown switch, applets, separators, music toolbar, the works)
- yakuake arc-dark skin
- antergos logos in /usr/share/logos and /usr/share/pixmaps
- konsole profile, desktop appletsrc, all that jazz
- kde_settings.conf now points to AntergosDark-Layan sddm theme

also replaced the old antergos-grub-theme with the Layan grub
theme because the old one was a git-sourced abomination. 75 distro
icons, terminal box, selection widgets, antergos wallpaper.
ships to /usr/share/grub/themes/antergos/ so calamares finds it.

oh and a dozen audit fixes:
- kscreenlockerrc wallpaper path fixed
- kdialogrc no longer says some other distro
- 7 stale knsregistry files deleted (dev machine was leaking)
- systemd-inhibit guarded with command -v (dinit doesnt have it)
- plasma restart uses killall not systemctl --user
- "XeroLinux Toolkit" -> "Antergos Toolkit" in appletsrc
- KDE_SESSION_VERSION=5 -> =6 (its 2026)
- mirrorlist script says Artix not Arch
- SDDM Messages.sh removed from build artifacts
This commit is contained in:
2026-07-16 21:57:36 +02:00
parent 716ff74560
commit 82ff06c4da
1302 changed files with 308189 additions and 235 deletions
@@ -0,0 +1,109 @@
/*
This file is part of the KDE project.
SPDX-FileCopyrightText: 2012 Martin Gräßlin <mgraesslin@kde.org>
SPDX-License-Identifier: GPL-2.0-or-later
*/
"use strict";
function sleep(miliseconds) {
var currentTime = new Date().getTime();
while (currentTime + miliseconds >= new Date().getTime()) {
}
}
class MaximizeEffect {
constructor() {
effect.configChanged.connect(this.loadConfig.bind(this));
effects.windowFrameGeometryChanged.connect(
this.onWindowFrameGeometryChanged.bind(this));
effects.windowMaximizedStateChanged.connect(
this.onWindowMaximizedStateChanged.bind(this));
effect.animationEnded.connect(this.restoreForceBlurState.bind(this));
this.loadConfig();
}
loadConfig() {
this.duration = animationTime(250);
}
onWindowMaximizedStateChanged(window) {
if (!window.oldGeometry) {
return;
}
sleep(50); //Skip some frames
window.setData(Effect.WindowForceBlurRole, true);
let oldGeometry = window.oldGeometry;
const newGeometry = window.geometry;
if (oldGeometry.width == newGeometry.width && oldGeometry.height == newGeometry.height)
oldGeometry = window.olderGeometry;
window.olderGeometry = Object.assign({}, window.oldGeometry);
window.oldGeometry = Object.assign({}, newGeometry);
window.maximizeAnimation1 = animate({
window: window,
duration: this.duration,
animations: [{
type: Effect.Size,
to: {
value1: newGeometry.width,
value2: newGeometry.height
},
from: {
value1: oldGeometry.width,
value2: oldGeometry.height
},
curve: QEasingCurve.OutCubic
}, {
type: Effect.Translation,
to: {
value1: 0,
value2: 0
},
from: {
value1: oldGeometry.x - newGeometry.x - (newGeometry.width / 2 - oldGeometry.width / 2),
value2: oldGeometry.y - newGeometry.y - (newGeometry.height / 2 - oldGeometry.height / 2)
},
curve: QEasingCurve.OutCubic
}]
});
if (!window.resize) {
window.maximizeAnimation2 =animate({
window: window,
duration: this.duration,
animations: [{
type: Effect.CrossFadePrevious,
to: 1.0,
from: 0.0,
curve: QEasingCurve.OutCubic
}]
});
}
}
restoreForceBlurState(window) {
window.setData(Effect.WindowForceBlurRole, null);
}
onWindowFrameGeometryChanged(window, oldGeometry) {
if (window.maximizeAnimation1) {
if (window.geometry.width != window.oldGeometry.width ||
window.geometry.height != window.oldGeometry.height) {
cancel(window.maximizeAnimation1);
delete window.maximizeAnimation1;
if (window.maximizeAnimation2) {
cancel(window.maximizeAnimation2);
delete window.maximizeAnimation2;
}
}
}
window.oldGeometry = Object.assign({}, window.geometry);
window.olderGeometry = Object.assign({}, oldGeometry);
}
}
new MaximizeEffect();
@@ -0,0 +1,113 @@
/********************************************************************
This file is part of the KDE project.
Copyright (C) 2012 Martin Gräßlin <mgraesslin@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*********************************************************************/
"use strict";
function sleep(miliseconds) {
var currentTime = new Date().getTime();
while (currentTime + miliseconds >= new Date().getTime()) {
}
}
var maximizeEffect = {
duration: animationTime(150),
loadConfig: function () {
maximizeEffect.duration = animationTime(150);
},
maximizeChanged: function (window) {
var m = Math.floor((Math.random() * 2) + 1);
sleep(50); //Skip some frames
if (!window.oldGeometry) {
return;
}
window.setData(Effect.WindowForceBlurRole, true);
var oldGeometry, newGeometry;
oldGeometry = window.oldGeometry;
newGeometry = window.geometry;
if (oldGeometry.width == newGeometry.width && oldGeometry.height == newGeometry.height)
oldGeometry = window.olderGeometry;
window.olderGeometry = window.oldGeometry;
window.oldGeometry = newGeometry;
window.maximizeAnimation1 = animate({
window: window,
duration: maximizeEffect.duration,
animations: [{
type: Effect.Size,
to: {
value1: newGeometry.width,
value2: newGeometry.height
},
from: {
value1: oldGeometry.width,
value2: oldGeometry.height
}
}, {
type: Effect.Translation,
to: {
value1: 0,
value2: 0
},
from: {
value1: oldGeometry.x - newGeometry.x - (newGeometry.width / 2 - oldGeometry.width / 2),
value2: oldGeometry.y - newGeometry.y - (newGeometry.height / 2 - oldGeometry.height / 2)
}
}]
});
//if (!window.resize) {
if (1 == 2 ) { // disabled the routine because
// CrossFadePrevious+xrender grabs a garbled texture as the start crossfade point
window.maximizeAnimation2 =animate({
window: window,
duration: maximizeEffect.duration,
animations: [{
delay: animationTime(32),
type: Effect.CrossFadePrevious,
to: 1.0,
from: 0.0
}]
});
}
},
restoreForceBlurState: function(window) {
window.setData(Effect.WindowForceBlurRole, null);
},
geometryChange: function (window, oldGeometry) {
if (window.maximizeAnimation1) {
if (window.geometry.width != window.oldGeometry.width ||
window.geometry.height != window.oldGeometry.height) {
cancel(window.maximizeAnimation1);
delete window.maximizeAnimation1;
if (window.maximizeAnimation2) {
cancel(window.maximizeAnimation2);
delete window.maximizeAnimation2;
}
}
}
window.oldGeometry = window.geometry;
window.olderGeometry = oldGeometry;
},
init: function () {
effect.configChanged.connect(maximizeEffect.loadConfig);
effects.windowGeometryShapeChanged.connect(maximizeEffect.geometryChange);
effects.windowMaximizedStateChanged.connect(maximizeEffect.maximizeChanged);
effect.animationEnded.connect(maximizeEffect.restoreForceBlurState);
}
};
maximizeEffect.init();
@@ -0,0 +1,19 @@
[Desktop Entry]
Comment=Animation for windows going to maximize/restore from maximize, less glitches
Icon=preferences-system-windows-effect-maximize
Name=Maximize antiglitch
Type=Service
X-KDE-ParentApp=
X-KDE-PluginInfo-Author=Martin Gräßlin (changed by Antonio Orefice)
X-KDE-PluginInfo-Category=Appearance
X-KDE-PluginInfo-Email=kokoko3k@gmail.com
X-KDE-PluginInfo-License=GPL
X-KDE-PluginInfo-Name=kwin4_effect_maximize_xrender
X-KDE-PluginInfo-Version=1.1
X-KDE-PluginInfo-Website=
X-KDE-ServiceTypes=KWin/Effect
X-KDE-PluginInfo-EnabledByDefault=false
X-KDE-Ordering=60
X-Plasma-API=javascript
X-Plasma-MainScript=code/maximize-xrender.js
@@ -0,0 +1,111 @@
/********************************************************************
This file is part of the KDE project.
Copyright (C) 2012 Martin Gräßlin <mgraesslin@kde.org>
Copyright (C) 2018 Alex Nemeth <alex.nemeth329@gmail.com
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*********************************************************************/
var rubberbandMaximizeEffect = {
duration: animationTime(200),
deviation: 0.05,
loadConfig: function () {
"use strict";
rubberbandMaximizeEffect.duration = animationTime(200);
},
slotWindowMaximizedStateChanged: function (window) {
"use strict";
if (!window.oldGeometry) {
return;
}
window.setData(Effect.WindowForceBackgroundContrastRole, true);
window.setData(Effect.WindowForceBlurRole, true);
var oldGeometry = window.oldGeometry;
var newGeometry = window.geometry;
if (oldGeometry.width == newGeometry.width &&
oldGeometry.height == newGeometry.height) {
oldGeometry = window.olderGeometry;
}
var scale = 0;
if (oldGeometry.width < newGeometry.width) {
scale = 1 - rubberbandMaximizeEffect.deviation;
} else {
scale = 1 + rubberbandMaximizeEffect.deviation;
}
window.olderGeometry = window.oldGeometry;
window.oldGeometry = newGeometry;
window.maximizeAnimation = animate({
window: window,
curve: QEasingCurve.OutSine,
duration: rubberbandMaximizeEffect.duration,
animations: [
{
type: Effect.Size,
delay: animationTime(10),
from: {
value1: newGeometry.width * scale,
value2: newGeometry.height * scale
},
to: {
value1: newGeometry.width,
value2: newGeometry.height
}
},
{
type: Effect.Translation,
from: {
value1: (oldGeometry.x - newGeometry.x - (newGeometry.width - oldGeometry.width) / 2) * rubberbandMaximizeEffect.deviation,
value2: (oldGeometry.y - newGeometry.y - (newGeometry.height - oldGeometry.height) / 2) * rubberbandMaximizeEffect.deviation
},
to: {
value1: 0,
value2: 0
}
}
]
});
},
slotWindowGeometryShapeChanged: function (window, oldGeometry) {
"use strict";
if (window.maximizeAnimation) {
if (window.geometry.width != window.oldGeometry.width ||
window.geometry.height != window.oldGeometry.height) {
cancel(window.maximizeAnimation);
delete window.maximizeAnimation;
}
}
window.oldGeometry = window.geometry;
window.olderGeometry = oldGeometry;
},
slotAnimationEnded: function (window) {
window.setData(Effect.WindowForceBackgroundContrastRole, null);
window.setData(Effect.WindowForceBlurRole, null);
},
init: function () {
"use strict";
effect.configChanged.connect(rubberbandMaximizeEffect.loadConfig);
effect.animationEnded.connect(rubberbandMaximizeEffect.slotAnimationEnded);
effects.windowGeometryShapeChanged.connect(rubberbandMaximizeEffect.slotWindowGeometryShapeChanged);
effects.windowMaximizedStateChanged.connect(rubberbandMaximizeEffect.slotWindowMaximizedStateChanged);
}
};
rubberbandMaximizeEffect.init();
@@ -0,0 +1,18 @@
[Desktop Entry]
Comment=Maximize/Restore window animation similar to Windows 10
Icon=preferences-system-windows-effect-rubberband-maximize
Name=Rubberband Maximize
Type=Service
X-KDE-ParentApp=
X-KDE-PluginInfo-Author=Alex Nemeth
X-KDE-PluginInfo-Category=Appearance
X-KDE-PluginInfo-Email=alex.nemeth329@gmail.com
X-KDE-PluginInfo-License=GPL
X-KDE-PluginInfo-Name=kwin4_effect_rubberband_maximize
X-KDE-PluginInfo-Version=1
X-KDE-PluginInfo-Website=
X-KDE-ServiceTypes=KWin/Effect
X-KDE-PluginInfo-EnabledByDefault=true
X-KDE-Ordering=60
X-Plasma-API=javascript
X-Plasma-MainScript=code/main.js