# Alternative zu plasma-nm

## schmidicom

Da die Devs von plasma-nm vor kurzem den Funktionsumfang von ihrem Frontend drastisch reduziert haben (BUG 376664), wollte ich mal fragen ob mir jemand ein alternatives Applet empfehlen kann das wenigstens noch den Status der aktiven VLAN-Verbindungen anzeigt.

----------

## Yamakuzure

Ich bin baff...

Alleine die Begründung, dass Gnome das ja auch nicht mehr unterstützt, haut mich um. Von der "das-Benutzt-eh-Niemand"-Ausrede mal ganz zu schweigen. Hammer.   :Shocked: 

----------

## schmidicom

Wenn der entfernte Code wenigstens fehlerhaft gewesen wäre und/oder andere Komponenten gestört hätte dann könnte ich den Rauswurf ja noch irgendwie verstehen, aber so empfinde ich das eigentlich eher als Bullshitbingo...

----------

## misterjack

Das hat gerade meinen Ehrgeiz gepackt, das zurück zu patchen. plasma-nm-5.10.3 kompiliert problemlos durch, die 5.9er Version hab ich nicht getestet.

```
mkdir -p /etc/portage/patches/kde-plasma/plasma-nm

cat <<EOF >> /etc/portage/patches/kde-plasma/plasma-nm/disable-connection-type-filtering.patch

diff -urN plasma-nm-5.10.3.orig/editor/connectioneditor.cpp plasma-nm-5.10.3/editor/connectioneditor.cpp

--- plasma-nm-5.10.3.orig/editor/connectioneditor.cpp   2017-07-18 05:09:03.298397090 +0200

+++ plasma-nm-5.10.3/editor/connectioneditor.cpp        2017-07-18 05:11:06.884698481 +0200

@@ -172,6 +172,23 @@

     action->setData(NetworkManager::ConnectionSettings::Wimax);

     m_menu->addAction(action);

 

+    m_menu->menu()->addSection(i18nc("Virtual hardware devices, eg Bridge, Bond", "Virtual"));

+

+    action = new QAction(i18n("Bond"), this);

+    action->setData(NetworkManager::ConnectionSettings::Bond);

+    m_menu->addAction(action);

+    action = new QAction(i18n("Bridge"), this);

+    action->setData(NetworkManager::ConnectionSettings::Bridge);

+    m_menu->addAction(action);

+    action = new QAction(i18n("VLAN"), this);

+    action->setData(NetworkManager::ConnectionSettings::Vlan);

+    m_menu->addAction(action);

+#if NM_CHECK_VERSION(0, 9, 10)

+    action = new QAction(i18n("Team"), this);

+    action->setData(NetworkManager::ConnectionSettings::Team);

+    m_menu->addAction(action);

+#endif

+

     m_menu->menu()->addSection(i18n("VPN"));

 

     KService::List services = KServiceTypeTrader::self()->query("PlasmaNetworkManagement/VpnUiPlugin");

diff -urN plasma-nm-5.10.3.orig/kded/notification.cpp plasma-nm-5.10.3/kded/notification.cpp

--- plasma-nm-5.10.3.orig/kded/notification.cpp 2017-07-18 05:09:03.298397090 +0200

+++ plasma-nm-5.10.3/kded/notification.cpp      2017-07-18 05:18:41.471093924 +0200

@@ -364,23 +364,7 @@

         NetworkManager::VpnConnection::Ptr vpnConnection = ac.objectCast<NetworkManager::VpnConnection>();

         connect(vpnConnection.data(), &NetworkManager::VpnConnection::stateChanged, this, &Notification::onVpnConnectionStateChanged);

 #if NM_CHECK_VERSION(0, 9, 10)

-    } else if (ac->type() != NetworkManager::ConnectionSettings::Bond &&

-               ac->type() != NetworkManager::ConnectionSettings::Bridge &&

-               ac->type() != NetworkManager::ConnectionSettings::Generic &&

-               ac->type() != NetworkManager::ConnectionSettings::Infiniband &&

-               ac->type() != NetworkManager::ConnectionSettings::Team &&

-#if NM_CHECK_VERSION(1, 1, 92)

-               ac->type() != NetworkManager::ConnectionSettings::Vlan &&

-               ac->type() != NetworkManager::ConnectionSettings::Tun) {

-#else

-               ac->type() != NetworkManager::ConnectionSettings::Vlan) {

-#endif

-

-#else

-    } else if (ac->type() != NetworkManager::ConnectionSettings::Bond &&

-               ac->type() != NetworkManager::ConnectionSettings::Bridge &&

-               ac->type() != NetworkManager::ConnectionSettings::Infiniband &&

-               ac->type() != NetworkManager::ConnectionSettings::Vlan) {

+    } else if (ac->type() != NetworkManager::ConnectionSettings::Generic) {

 #endif

         connect(ac.data(), &NetworkManager::ActiveConnection::stateChanged, this, &Notification::onActiveConnectionStateChanged);

     }

diff -urN plasma-nm-5.10.3.orig/libs/declarative/connectionicon.cpp plasma-nm-5.10.3/libs/declarative/connectionicon.cpp

--- plasma-nm-5.10.3.orig/libs/declarative/connectionicon.cpp   2017-07-18 05:09:03.308396790 +0200

+++ plasma-nm-5.10.3/libs/declarative/connectionicon.cpp        2017-07-18 05:19:34.639502736 +0200

@@ -279,19 +279,9 @@

 

         if (!vpnConnection) {

 #if NM_CHECK_VERSION(0, 9, 10)

-            if (activeConnection->state() == NetworkManager::ActiveConnection::Activating &&

-                activeConnection->type() != NetworkManager::ConnectionSettings::Bond &&

-                activeConnection->type() != NetworkManager::ConnectionSettings::Bridge &&

-                activeConnection->type() != NetworkManager::ConnectionSettings::Generic &&

-                activeConnection->type() != NetworkManager::ConnectionSettings::Infiniband &&

-                activeConnection->type() != NetworkManager::ConnectionSettings::Team &&

-                activeConnection->type() != NetworkManager::ConnectionSettings::Vlan) {

+            if (activeConnection->state() == NetworkManager::ActiveConnection::Activating && activeConnection->type() != NetworkManager::ConnectionSettings::Generic) {

 #else

-            if (activeConnection->state() == NetworkManager::ActiveConnection::Activating &&

-                activeConnection->type() != NetworkManager::ConnectionSettings::Bond &&

-                activeConnection->type() != NetworkManager::ConnectionSettings::Bridge &&

-                activeConnection->type() != NetworkManager::ConnectionSettings::Infiniband &&

-                activeConnection->type() != NetworkManager::ConnectionSettings::Vlan) {

+            if (activeConnection->state() == NetworkManager::ActiveConnection::Activating) {

 #endif

                 connecting = true;

             }

@@ -449,8 +439,8 @@

                     }

                 }

             } else {

-                // Ignore other devices (bond/bridge/team etc.)

-                setDisconnectedIcon();

+                setConnectionIcon("network-wired-activated");

+                setConnectionTooltipIcon("network-wired-activated");

             }

         }

     } else {

diff -urN plasma-nm-5.10.3.orig/libs/declarative/networkstatus.cpp plasma-nm-5.10.3/libs/declarative/networkstatus.cpp

--- plasma-nm-5.10.3.orig/libs/declarative/networkstatus.cpp    2017-07-18 05:09:03.308396790 +0200

+++ plasma-nm-5.10.3/libs/declarative/networkstatus.cpp 2017-07-18 05:13:42.890029658 +0200

@@ -169,26 +169,7 @@

     });

 

     Q_FOREACH (const NetworkManager::ActiveConnection::Ptr & active, activeConnectionList) {

-#if NM_CHECK_VERSION(0, 9, 10)

-        if (!active->devices().isEmpty() &&

-            active->type() != NetworkManager::ConnectionSettings::Bond &&

-            active->type() != NetworkManager::ConnectionSettings::Bridge &&

-            active->type() != NetworkManager::ConnectionSettings::Generic &&

-            active->type() != NetworkManager::ConnectionSettings::Infiniband &&

-            active->type() != NetworkManager::ConnectionSettings::Team &&

-#if NM_CHECK_VERSION(1, 1, 92)

-            active->type() != NetworkManager::ConnectionSettings::Vlan &&

-            active->type() != NetworkManager::ConnectionSettings::Tun) {

-#else

-            active->type() != NetworkManager::ConnectionSettings::Vlan) {

-#endif

-#else

-        if (!active->devices().isEmpty() &&

-            active->type() != NetworkManager::ConnectionSettings::Bond &&

-            active->type() != NetworkManager::ConnectionSettings::Bridge &&

-            active->type() != NetworkManager::ConnectionSettings::Infiniband &&

-            active->type() != NetworkManager::ConnectionSettings::Vlan) {

-#endif

+        if (!active->devices().isEmpty()) {

             NetworkManager::Device::Ptr device = NetworkManager::findNetworkInterface(active->devices().first());

 #if NM_CHECK_VERSION(0, 9, 10)

             if (device && device->type() != NetworkManager::Device::Generic && device->type() <= NetworkManager::Device::Team) {

diff -urN plasma-nm-5.10.3.orig/libs/uiutils.cpp plasma-nm-5.10.3/libs/uiutils.cpp

--- plasma-nm-5.10.3.orig/libs/uiutils.cpp      2017-07-18 05:09:03.298397090 +0200

+++ plasma-nm-5.10.3/libs/uiutils.cpp   2017-07-18 05:24:59.639776345 +0200

@@ -110,20 +110,6 @@

 

 bool UiUtils::isConnectionTypeSupported(NetworkManager::ConnectionSettings::ConnectionType type)

 {

-    if (type == NetworkManager::ConnectionSettings::Bond ||

-        type == NetworkManager::ConnectionSettings::Bridge ||

-        type == NetworkManager::ConnectionSettings::Generic ||

-        type == NetworkManager::ConnectionSettings::Infiniband ||

-        type == NetworkManager::ConnectionSettings::Team ||

-#if NM_CHECK_VERSION(1, 2, 0)

-        type == NetworkManager::ConnectionSettings::Vlan ||

-        type == NetworkManager::ConnectionSettings::Tun) {

-#else

-        type == NetworkManager::ConnectionSettings::Vlan) {

-#endif

-        return false;

-    }

-

     return true;

 }

EOF
```

Edith meint: Wobei ich gerade feststelle, dass der bridge-Support total verbuggt ist. Bridges ohne IP-Adresse werden erst garnicht angezeigt oder welche Nic zugewiesen wurde, daher schlicht unbrauchbar für mich - ich bleibe bei systemd-networkd. Support dafür zu entfernen ist natürlich viel einfacher anstatt Bugs zu fixen, aber das wäre ja mit Arbeit verbunden xD

----------

## schmidicom

 *misterjack wrote:*   

> Edith meint: Wobei ich gerade feststelle, dass der bridge-Support total verbuggt ist. Bridges ohne IP-Adresse werden erst garnicht angezeigt oder welche Nic zugewiesen wurde, daher schlicht unbrauchbar für mich - ich bleibe bei systemd-networkd. Support dafür zu entfernen ist natürlich viel einfacher anstatt Bugs zu fixen, aber das wäre ja mit Arbeit verbunden xD

 

Das hat aber vor dem entfernen definitiv funktioniert, also gab es wohl danach irgendwelche Änderungen welche das zurückpatchen dieser Funktionalität verhindert. Eine echt geile Aktion...  :Mad: 

Und für systemd-networkd gibt es (so weit ich weiß) leider kein Applet, nicht einmal eines das wenigstens den Status der aktuellen Verbindungen anzeigen würde.

----------

## misterjack

 *schmidicom wrote:*   

> Das hat aber vor dem entfernen definitiv funktioniert

 

Nochmal ausprobiert, mit dem kde5-nm-connection-editor kann man bridges erstellen. Die anderen Bugs hab ich aber auch mit der letzten 5.8er Version, liegt vielleicht daran, dass ich diese nicht per NetworkManager erstellt hatte. Der Patch sollte für dich funktionieren  :Smile: 

----------

## schmidicom

Selbst wenn der Patch noch funktioniert ist das keine akzeptable Lösung denn es ist völlig unklar wie lange das noch der Fall sein wird und ob dieser nicht irgendwann andere Probleme verursachen wird, sowas gehört wieder in den Upstream. Dazu kommt das mir das ganze immer mehr wie eine Einzelaktion vor, denn in den KDE-SIG IRC Logs von https://meetbot.fedoraproject.org/sresults/?group_id=kde-sig&type=team sieht es nicht so aus als ob er dies vorher mit den anderen Devs besprochen hätte.

----------

## schmidicom

Und die Katastrophe ist/wird noch schlimmer...

Ich merke gerade das es bei der Verwendung von KDE Plasma gar nicht mehr so einfach ist vom NetworkManager weg zu kommen. Zum Beispiel kann PowerDevil ohne den NetworkManager wohl nicht mehr länger mit WLAN umgehen und andere Qt/KDE-Komponenten verlieren die Möglichkeit der "physical position determination" (USE-Flag: "geolocation").

----------

## tazinblack

Und wieder bin ich an der Stelle, dass ich auf den ganzen KDE und Gnome Mist keine Lust mehr habe.

Auch die Mengen an updates und die damit verbundenen compile-Zeiten in letzter Zeit gehen mir ziemlich auf den Keks.

Ich glaube ich sollte doch mal etwas Energie in die Suche nach einer Alternative stecken.

----------

## Josef.95

 *tazinblack wrote:*   

> Auch die Mengen an updates und die damit verbundenen compile-Zeiten in letzter Zeit gehen mir ziemlich auf den Keks.

 

Naja, die vielen Updates sind im testing-Zweig normal - die neusten Versionen sind halt zum testen da.

Wenn dir die vielen Updates zu viel sind, dann bleib besser im stable-Zweig - dort gibt es wesentlich weniger Updates.

----------

## misterjack

 *tazinblack wrote:*   

> Und wieder bin ich an der Stelle, dass ich auf den ganzen KDE und Gnome Mist keine Lust mehr habe.

 

Nur weil ein Rädchen im großen Getriebe nicht ganz mitspielt? Immerhin ist die Bereitschaft da, die eigenen Entscheidungen zu überdenken, siehe Bugreport. Bin gespannt, ob in die richtige Richtung  :Smile: 

----------

## schmidicom

 *misterjack wrote:*   

> Immerhin ist die Bereitschaft da, die eigenen Entscheidungen zu überdenken, siehe Bugreport.

 Wie kommst du da drauf? Ich merke von dieser Bereitschaft nichts, im Gegenteil für den Entwickler ist ein externer Patch wohl völlig ausreichend.

----------

## misterjack

Meine Interpretation von:

 *Quote:*   

> I'll try to bring this back to discussion and we will see if we are going to revert the removed support back or not.

 

----------

## schmidicom

 *misterjack wrote:*   

> Meine Interpretation von: *Quote:*   I'll try to bring this back to discussion and we will see if we are going to revert the removed support back or not. 

 

Wenn das eine ähnliche Diskussion wird wie die welche zum entfernen dieser Funktionalität geführt wurde (das waren wohl genau zwei Leute, der Dev und ein anderer welcher das nie benutzte) sehe ich da wenig Grund zur Hoffnung.

----------

## misterjack

 *schmidicom wrote:*   

> sehe ich da wenig Grund zur Hoffnung.

 

Dann biste bestimmt umso mehr überrascht, dass unser Anliegen Gehör gefunden hat: https://bugs.kde.org/show_bug.cgi?id=376664#c32  :Smile: 

----------

## schmidicom

@misterjack

Ja es ist schön das KDE jetzt doch nicht den selben Irrweg wie GNOME geht.

----------

