Skip to content

Ported to GTK4 #290

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 122 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
122 commits
Select commit Hold shift + click to select a range
b599eba
Merge pull request #1 from WayfireWM/master
trigg Feb 8, 2025
1ea0ce7
- Initial switch over to GTK4.
trigg Feb 9, 2025
1c22163
- Custom readme to explain fork
trigg Feb 9, 2025
39e11d0
- Fixed #11 scrolling on volume widget
trigg Feb 9, 2025
a681107
- Implemented gbusmenu-glib
trigg Feb 12, 2025
f9081e8
- some house keeping
trigg Feb 12, 2025
e25bf2e
- Fixes #7
trigg Feb 13, 2025
4e34203
- Moved all icon_size variables out of widget logic
trigg Feb 13, 2025
b9b1103
- Fixes #19
trigg Feb 14, 2025
b19796a
- fixed #14
trigg Feb 14, 2025
aba5c1a
- Fixed #21
trigg Feb 14, 2025
86857c3
- Toplevel button context menu clean up. fixed #24
trigg Feb 14, 2025
07bb42a
- Sanity check for SNI menu checkbox and radio
trigg Feb 14, 2025
64696f4
- Fixed #16
trigg Feb 14, 2025
b462a39
- Remove TODO
trigg Feb 14, 2025
ee643a9
- Code cleanup
trigg Feb 14, 2025
e3e3782
- Fix app menu scroll
trigg Feb 14, 2025
c0d3661
- Font via CSS
trigg Feb 14, 2025
bb36c9f
- Fixed & updated wf-background
trigg Feb 15, 2025
34254f5
- Remove cout spam
trigg Feb 15, 2025
3cfbdd2
- Dock css styling added
trigg Feb 15, 2025
fd6b425
- Implemented central string to icon logic
trigg Feb 15, 2025
24a02e0
- Fixed leak on output unplug
trigg Feb 15, 2025
5f58c21
- Use an animation callback for background fade
trigg Feb 15, 2025
ff1d774
- Fixed #5
trigg Feb 15, 2025
6afcad2
- Dock click region fixes
trigg Feb 15, 2025
44aba39
- Remove my off-by-one testing
trigg Feb 15, 2025
37ed25c
- Fixed incorrect fade logic in background
trigg Feb 16, 2025
601d5a7
- Fixed #25
trigg Feb 16, 2025
303b264
- Fixed notifications
trigg Feb 16, 2025
42ab143
- Fix closing notifications
trigg Feb 16, 2025
7cce842
- Revert README in prep for pullrequest
trigg Feb 16, 2025
5ffad76
- Flatten window buttons
trigg Feb 16, 2025
a2e4e06
- Attempt at bringing up CI
trigg Feb 16, 2025
9bd7fea
- Another attempt
trigg Feb 16, 2025
a125a20
- once more
trigg Feb 16, 2025
1b75703
- Maybe one more commit will do it
trigg Feb 16, 2025
66a51f4
- I'm too used to other linux variants
trigg Feb 16, 2025
e09a194
- introspection
trigg Feb 16, 2025
17772c9
- vala
trigg Feb 16, 2025
6c09f40
- Some crust
trigg Feb 16, 2025
790542c
- Crust
trigg Feb 16, 2025
fe68366
- Remove crust
trigg Feb 16, 2025
6a5c88a
- Missed extra file while patching
trigg Feb 16, 2025
adc51dd
- Removing some logging
trigg Feb 16, 2025
e6a3d7e
- Fixed volume control animation
trigg Feb 17, 2025
76a4d41
- Rather than fighting MenuButton to be a button with a menu on our t…
trigg Feb 17, 2025
8720f2c
- Same treatment for system tray
trigg Feb 17, 2025
99e1ff7
- bump gtk4 requirement
trigg Feb 17, 2025
96ac9cf
- Fix launcher icons somewhat
trigg Feb 17, 2025
540a585
- Remove center box when unused
trigg Feb 18, 2025
4e316cc
- crust
trigg Feb 18, 2025
62aafe4
- volume slider should autohide after manual interaction
trigg Feb 23, 2025
f0588db
Enable XDG-activation via launch context
trigg Apr 20, 2025
ccf1057
Merge pull request #31 from trigg/xdg-activation-gtk4
trigg Apr 20, 2025
38854af
Trying to fix build
trigg Apr 20, 2025
40a1681
More tweaking
trigg Apr 20, 2025
5f211c2
Fighting with packages in build action
trigg Apr 20, 2025
cab481a
I am not a fan of this package manager
trigg Apr 20, 2025
e72ab0b
XDG-activation for launchers
trigg Apr 20, 2025
d5e9581
Fix #32
trigg Apr 21, 2025
dd6d65c
Fixes #33
trigg Apr 21, 2025
7a109b3
- Honour the passive status of SNI. Maybe have as an option for peopl…
trigg Apr 21, 2025
94d54fc
uncrustify
trigg Apr 21, 2025
16128b6
more uncrustify
trigg Apr 21, 2025
ba0a6fc
- Comment out unused icon code
trigg Apr 23, 2025
21ab818
- Fine
trigg Apr 23, 2025
e30be9f
- Set orientation of category box
trigg Apr 26, 2025
5bb6c15
- Force ellipsize menu items when not using menuitems in a list
trigg Apr 28, 2025
a996747
- volume: implement middle click mute toggle
trigg May 4, 2025
5686ab9
- uncrustify
trigg May 4, 2025
7d47688
- Fix #34 slightly
trigg May 4, 2025
2309e40
- Fix occasional focus loss
trigg May 4, 2025
cc2e80d
- Don't hide categories when searching apps in menu
trigg May 4, 2025
2a4be1e
- uncrustify
trigg May 4, 2025
22d4ecc
- Correct layout of logout UI
trigg May 5, 2025
33c02f6
- uncrustify
trigg May 5, 2025
2550644
- Added logout UI tooltips
trigg May 5, 2025
1650204
- uncrustify?
trigg May 5, 2025
b52688c
- tooltips part 2
trigg May 5, 2025
bb9cb4f
- so crusty
trigg May 5, 2025
fb07ea2
- recrustify
trigg May 5, 2025
01e8cd8
- Improve logout button
trigg May 5, 2025
cd3c389
background: Rewrite to use GL instead of cairo for rendering
soreau May 8, 2025
c0832fe
background: Fix incorrect image mirroring
soreau May 8, 2025
0a90527
background: Whitespace fixes
soreau May 8, 2025
8c179cd
- Fix quirks and crashes in menu
trigg May 8, 2025
d2143c4
- uncrustify
trigg May 8, 2025
965b90c
- uncrust
trigg May 8, 2025
40fce4d
background: Apply adjustments for fill modes
soreau May 8, 2025
28cf6fd
background: Fix preserve_aspect fill mode
soreau May 8, 2025
a0ff555
Merge pull request #43 from soreau/wf-background-gl
trigg May 8, 2025
6b32d84
- uncrustify
trigg May 8, 2025
4079e5f
- extend click range of menu button outside of button
trigg May 8, 2025
5beaefa
- uncrustify
trigg May 8, 2025
ea65bb6
background: Optimize texture uploading by only calling glTexImage2D once
soreau May 9, 2025
21a1d72
Merge pull request #44 from soreau/wf-background-gl
trigg May 9, 2025
3a62cdb
window-list: Set minimize target more reliably
soreau May 10, 2025
2d91dbd
Merge pull request #46 from soreau/fix-45
trigg May 12, 2025
0f8a9b3
- uncrustify pt1
trigg May 12, 2025
809ed1f
- uncrustify pt2
trigg May 12, 2025
cc3fde4
window-list: Set minimize target even more reliably
soreau May 18, 2025
50ecfb2
Merge pull request #47 from soreau/fix-45-again
trigg May 24, 2025
97ab901
- Moved ConfigCSS up into App class from panel and dock
trigg Jul 3, 2025
3918b30
- uncrustify
trigg Jul 3, 2025
252e7f8
- Fixed bare sizes in font config
trigg Jul 3, 2025
9e6b937
- uncrustify
trigg Jul 3, 2025
c988cc0
- further crust
trigg Jul 3, 2025
f0ba78e
window-list: Don't send empty minimize targets
soreau Jul 20, 2025
8b85866
shell-app: set argc/argv when running gtk app
ammen99 Jul 20, 2025
c85fc1d
Merge pull request #49 from soreau/nonzero-minimize-target
trigg Jul 20, 2025
8c81005
- Broken attempt at layout management
trigg Jul 20, 2025
56edb5c
- Add user option for window list button size
trigg Jul 24, 2025
8eb52e0
- uncrustify
trigg Jul 24, 2025
112405c
Merge pull request #51 from trigg/layoutmanagement
trigg Jul 25, 2025
4a7fae9
- uncrustify
trigg Jul 25, 2025
bcfc439
Merge pull request #50 from WayfireWM/gtk4-fix-cfg
trigg Jul 25, 2025
833ceba
- remove unnecessay set_y
trigg Jul 25, 2025
1a16653
- Apply window-list size changes immediately
trigg Jul 25, 2025
1a236bb
- uncrustify
trigg Jul 25, 2025
56eae39
window-list: Fix minimize targets after closing a toplevel
soreau Jul 27, 2025
8c4fee7
Merge pull request #52 from soreau/window-list-update
trigg Aug 1, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@ jobs:
container: alpine:latest
steps:
- run: echo 'http://dl-cdn.alpinelinux.org/alpine/edge/testing' >> /etc/apk/repositories
- run: apk --no-cache add git g++ binutils pkgconf meson ninja musl-dev gtk+3.0-dev gtkmm3-dev wayland-protocols wayfire-dev gtk-layer-shell-dev pulseaudio-dev libdbusmenu-gtk3-dev alsa-lib-dev
- run: apk --no-cache add git g++ binutils pkgconf meson ninja musl-dev gtk4.0-dev gtkmm4-dev vala gobject-introspection gobject-introspection-dev wayland-protocols wayfire-dev pulseaudio-dev libdbusmenu-glib-dev alsa-lib-dev
- run: echo 'http://dl-cdn.alpinelinux.org/alpine/edge/community' >> /etc/apk/repositories
- run: apk --no-cache add gtk4-layer-shell-dev
- name: wf-shell
uses: actions/checkout@v2
with:
Expand Down
6 changes: 3 additions & 3 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
[submodule "subprojects/gtk-layer-shell"]
path = subprojects/gtk-layer-shell
url = https://github.com/wmww/gtk-layer-shell
[submodule "subprojects/gvc"]
path = subprojects/gvc
url = https://github.com/GNOME/libgnome-volume-control
[submodule "subprojects/wayland-logout"]
path = subprojects/wayland-logout
url = https://github.com/soreau/wayland-logout
[submodule "subprojects/gtk4-layer-shell"]
path = subprojects/gtk4-layer-shell
url = https://github.com/wmww/gtk4-layer-shell.git
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Currently it has only a GTK-based panel and background client.

# Dependencies

wf-shell needs the core wayland libraries and protocols (`wayland-devel` and `wayland-protocols-devel` for Fedora), gtkmm-3.0 and [wf-config](https://github.com/WayfireWM/wf-config)
wf-shell needs the core wayland libraries and protocols (`wayland-devel` and `wayland-protocols-devel` for Fedora), gtkmm-4.0 and [wf-config](https://github.com/WayfireWM/wf-config)

# Build

Expand Down
96 changes: 96 additions & 0 deletions data/css/default.css
Original file line number Diff line number Diff line change
Expand Up @@ -59,4 +59,100 @@

.wf-panel .command-output.icon-bottom label {
padding-bottom: 5px;
}

.excellent {
color: #00ff00;
}

.good {
color: #88ff00;
}

.ok {
color: #ffff00;
}

.weak {
color: #ff8800;
}

.none {
color: #ff0000;
}

.wf-dock,
.wf-dock .out-box {
background: transparent;
}

.wf-dock .box {
padding-left: 1em;
padding-right: 1em;
border-radius: 1em;
}

.wf-dock image {
transition: 200ms;
-gtk-icon-transform: scale(1.0);
padding-left: 1rem;
padding-right: 1rem;
}

.wf-dock image:hover {
transition: 200ms;
-gtk-icon-transform: scale(1.3);
padding-left: 2rem;
padding-right: 2rem;
}

.wf-dock .minimized image {
-gtk-icon-filter: grayscale(1);
}

.wf-dock image {
animation-name: embiggen;
animation-duration: 1000ms;
animation-timing-function: linear;
animation-iteration-count: 1;
}

.wf-dock .closing image {
animation-name: kromulent;
animation-duration: 1000ms;
animation-timing-function: linear;
animation-iteration-count: 1;
animation-fill-mode: forwards;
}

@keyframes embiggen {
to {
-gtk-icon-size: 64px;
-gtk-icon-transform: translateY(0px);
padding-left: 1rem;
padding-right: 1rem;
}

from {
-gtk-icon-size: 0px;
-gtk-icon-transform: translateY(64px);
padding-left: 0rem;
padding-right: 0rem;
}
}

@keyframes kromulent {
from {
-gtk-icon-size: 64px;
-gtk-icon-transform: translateY(0px);
padding-left: 1rem;
padding-right: 1rem;
}

to {
-gtk-icon-size: 0px;
-gtk-icon-transform: translateY(64px);
padding-left: 0rem;
padding-right: 0rem;
}
}
40 changes: 22 additions & 18 deletions meson.build
Original file line number Diff line number Diff line change
@@ -1,51 +1,55 @@
project(
'wf-shell',
'c',
'c',
'cpp',
version: '0.10.0',
license: 'MIT',
meson_version: '>=0.51.0',
default_options: [
'cpp_std=c++17',
'c_std=c11',
'c_std=c11',
'warning_level=2',
'werror=false',
],
)

wayfire = dependency('wayfire')
wayfire = dependency('wayfire')
wayland_client = dependency('wayland-client')
wayland_protos = dependency('wayland-protocols')
gtkmm = dependency('gtkmm-3.0', version: '>=3.24')
wfconfig = dependency('wf-config', version: '>=0.7.0') #TODO fallback submodule
gtklayershell = dependency('gtk-layer-shell-0', version: '>= 0.6', fallback: ['gtk-layer-shell', 'gtk_layer_shell'])
libpulse = dependency('libpulse', required : get_option('pulse'))
dbusmenu_gtk = dependency('dbusmenu-gtk3-0.4')
libgvc = subproject('gvc', default_options: ['static=true'], required : get_option('pulse'))
gtkmm = dependency('gtkmm-4.0', version: '>=4.12')
wfconfig = dependency('wf-config', version: '>=0.7.0') #TODO fallback submodule
epoxy = dependency('epoxy')
gtklayershell = dependency('gtk4-layer-shell')
libpulse = dependency('libpulse', required: get_option('pulse'))
dbusmenu_gtk = dependency('dbusmenu-glib-0.4')
libgvc = subproject('gvc', default_options: ['static=true'], required: get_option('pulse'))

if get_option('wayland-logout') == true
wayland_logout = subproject('wayland-logout')
wayland_logout = subproject('wayland-logout')
endif

if libpulse.found()
libgvc = libgvc.get_variable('libgvc_dep')
add_project_arguments('-DHAVE_PULSE=1', language : 'cpp')
libgvc = libgvc.get_variable('libgvc_dep')
add_project_arguments('-DHAVE_PULSE=1', language: 'cpp')
endif

needs_libinotify = ['freebsd', 'dragonfly'].contains(host_machine.system())
libinotify = dependency('libinotify', required: needs_libinotify)
libinotify = dependency('libinotify', required: needs_libinotify)

add_project_arguments(['-Wno-pedantic', '-Wno-unused-parameter', '-Wno-parentheses'], language: 'cpp')
add_project_arguments(
['-Wno-pedantic', '-Wno-unused-parameter', '-Wno-parentheses'],
language: 'cpp',
)

resource_dir = join_paths(get_option('prefix'), 'share', 'wayfire')
metadata_dir = join_paths(resource_dir, 'metadata', 'wf-shell')
sysconf_dir = join_paths(get_option('prefix'), get_option('sysconfdir'))

icon_dir = join_paths(get_option('prefix'), 'share', 'wayfire', 'icons')
add_project_arguments('-DICONDIR="' + icon_dir + '"', language : 'cpp')
add_project_arguments('-DRESOURCEDIR="' + resource_dir + '"', language : 'cpp')
add_project_arguments('-DMETADATA_DIR="' + metadata_dir + '"', language : 'cpp')
add_project_arguments('-DSYSCONF_DIR="' + sysconf_dir + '"', language : 'cpp')
add_project_arguments('-DICONDIR="' + icon_dir + '"', language: 'cpp')
add_project_arguments('-DRESOURCEDIR="' + resource_dir + '"', language: 'cpp')
add_project_arguments('-DMETADATA_DIR="' + metadata_dir + '"', language: 'cpp')
add_project_arguments('-DSYSCONF_DIR="' + sysconf_dir + '"', language: 'cpp')

subdir('metadata')
subdir('proto')
Expand Down
14 changes: 12 additions & 2 deletions meson_options.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,12 @@
option('pulse', type: 'feature', value: 'auto', description: 'Build pulseaudio volume widget')
option('wayland-logout', type: 'boolean', value: 'true', description: 'Install wayland-logout')
option(
'pulse',
type: 'feature',
value: 'auto',
description: 'Build pulseaudio volume widget',
)
option(
'wayland-logout',
type: 'boolean',
value: true,
description: 'Install wayland-logout',
)
5 changes: 5 additions & 0 deletions metadata/dock.xml
Original file line number Diff line number Diff line change
Expand Up @@ -40,5 +40,10 @@
<_long>The distance from the cursor to the edge of screen to show the panel when it's hidden.</_long>
<default>20</default>
</option>
<option name="show_close" type="bool">
<_short>Show Close Animations</_short>
<_long>Keep all window icons for up to 2 seconds to allow CSS animations.</_long>
<default>true</default>
</option>
</plugin>
</wf-shell>
5 changes: 5 additions & 0 deletions metadata/panel.xml
Original file line number Diff line number Diff line change
Expand Up @@ -351,6 +351,11 @@ Set to -1 to only run it by clicking the button.
<_short>Middle Click Closes Windows</_short>
<default>false</default>
</option>
<option name="window_list_size" type="int">
<_short>Window List Size</_short>
<default>192</default>
<min>1</min>
</option>
</group>
</plugin>
</wf-shell>
Loading
Loading