Index: /applications/editors/josm/plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/DrawBuildingAction.java
===================================================================
--- /applications/editors/josm/plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/DrawBuildingAction.java	(revision 35928)
+++ /applications/editors/josm/plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/DrawBuildingAction.java	(revision 35929)
@@ -49,4 +49,9 @@
 public class DrawBuildingAction extends MapMode implements MapViewPaintable, DataSelectionListener,
         KeyPressReleaseListener, ModifierExListener {
+    // We need to avoid opening many file descriptors on Linux under Wayland -- see JOSM #21929. This will probably also
+    // improve performance, since we aren't creating cursors all the time.
+    private static final Cursor CURSOR_SILO = ImageProvider.getCursor("crosshair", "silo");
+    private static final Cursor CURSOR_BUILDING = ImageProvider.getCursor("crosshair", "building");
+
     private enum Mode {
         None, Drawing, DrawingWidth, DrawingAngFix
@@ -87,7 +92,7 @@
         try {
             if (ToolSettings.Shape.CIRCLE == ToolSettings.getShape()) {
-                return ImageProvider.getCursor("crosshair", "silo");
+                return CURSOR_SILO;
             } else {
-                return ImageProvider.getCursor("crosshair", "building");
+                return CURSOR_BUILDING;
             }
         } catch (Exception e) {
