summaryrefslogtreecommitdiff
path: root/accounts/gkleen@sif/shell/quickshell/Bar.qml
blob: 54ac2d3c179edd2df84fc2157d6d57be062cb26a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
import Quickshell
import Quickshell.Wayland
import QtQuick
import qs.Services

PanelWindow {
  id: bar

  WlrLayershell.namespace: "bar"

  property bool haveMaximizedWindow: {
    let currWindowId = Array.from(NiriService.workspaces).find(ws => {
      return ws.output === bar.screen.name && ws.is_active;
    })?.active_window_id;
    let activeWindowTileSize = Array.from(NiriService.windows).find(win => win.id == currWindowId)?.layout?.tile_size;

    if (!activeWindowTileSize)
      return false;
    return activeWindowTileSize[0] >= bar.screen.width && activeWindowTileSize[1] >= bar.screen.height - bar.height;
  }

  anchors {
    top: true
    left: true
    right: true
  }
  margins {
    left: bar.haveMaximizedWindow ? 0 : 26 + 8
    right: bar.haveMaximizedWindow ? 0 : 26 + 8
  }

  implicitHeight: 21
  color: "transparent"

  Rectangle {
    color: bar.haveMaximizedWindow ? "black" : Qt.rgba(0, 0, 0, 0.75)
    anchors.fill: parent
    // bottomLeftRadius: 8
    // bottomRightRadius: 8
  }

  Row {
    id: left

    height: parent.height
    width: childrenRect.width
    anchors.left: parent.left
    anchors.leftMargin: 8
    anchors.verticalCenter: parent.verticalCenter
    spacing: 8

    WorkspaceSwitcher {
      screen: bar.screen
    }
  }

  Row {
    id: center

    height: parent.height
    width: childrenRect.width
    anchors.centerIn: parent
    spacing: 5

    ActiveWindowDisplay {
      screen: bar.screen
      maxWidth: bar.width - 2*Math.max(left.width, right.width) - 2*8
    }
  }

  Row {
    id: right

    height: parent.height
    width: childrenRect.width
    anchors.right: parent.right
    anchors.rightMargin: 8
    anchors.verticalCenter: parent.verticalCenter
    spacing: 0

    WorktimeWidget {}

    KeyboardLayout {}

    Item {
      visible: privacy.visible
      height: parent.height
      width: 8 - 4
    }

    PrivacyWidget {
      id: privacy
    }

    Item {
      visible: privacy.visible
      height: parent.height
      width: 8 - 4
    }

    SystemTray {}

    PipewireWidget {}

    BrightnessWidget {}

    BatteryWidget {}

    WaylandInhibitorWidget {
      window: bar
    }

    NotificationInhibitorWidget {}

    LidSwitchInhibitorWidget {}

    Item {
      height: parent.height
      width: 8 - 4
    }

    Clock {}
  }
}