# apparmor.d - Full set of apparmor profiles
# Copyright (C) 2021-2025 Alexandre Pujol <alexandre@pujol.io>
# SPDX-License-Identifier: GPL-2.0-only

  abi <abi/4.0>,

  include <abstractions/bus/session/org.gtk.Actions>
  include <abstractions/bus/session/org.gtk.Menus>
  include <abstractions/bus/session/org.gtk.Settings>
  include <abstractions/bus/session/org.gtk.vfs.MountTracker>




  # Need to be allowed for all peer because from the host namespace we do not
  # see the glycin namespace. This is showned by 'peer=(label=---)' in the logs.
  #
  # As of today, we cannot specify the ns scope and view of the peer.
  # See: https://gitlab.com/apparmor/apparmor/-/wikis/AppArmorPolicyView
  unix (send receive) type=seqpacket, # peer=(label=---), # file_inherit
  unix (send receive) type=stream, # peer=(label=---), # file_inherit
  priority=-10 @{bin}/bwrap  px -> :glycin:bwrap,

  @{lib}/{,@{multiarch}/}gtk-2.0/{,**} mr,
  @{lib}/{,@{multiarch}/}gtk-3.0/{,**} mr,
  @{lib}/{,@{multiarch}/}gtk-4.0/{,**} mr,

  /usr/share/gtksourceview-2.0/{,**} r,
  /usr/share/gtksourceview-3.0/{,**} r,
  /usr/share/gtksourceview-4/{,**} r,
  /usr/share/gtksourceview-5/{,**} r,

  /usr/share/glycin-loaders/{,**} r,

  /usr/share/gtk-2.0/ r,
  /usr/share/gtk-2.0/gtkrc r,

  /usr/share/gtk-3.0/ r,
  /usr/share/gtk-3.0/settings.ini r,

  /usr/share/gtk-4.0/ r,
  /usr/share/gtk-4.0/settings.ini r,

  /etc/gtk/gtkrc r,

  /etc/gtk-2.0/ r,
  /etc/gtk-2.0/gtkrc r,

  /etc/gtk-3.0/ r,
  /etc/gtk-3.0/*.conf r,
  /etc/gtk-3.0/settings.ini r,

  /etc/gtk-4.0/ r,
  /etc/gtk-4.0/*.conf r,
  /etc/gtk-4.0/settings.ini r,

  owner @{HOME}/.gtk r,
  owner @{HOME}/.gtkrc r,
  owner @{HOME}/.gtkrc-2.0 r,
  owner @{HOME}/.gtk-bookmarks r,

  owner @{user_cache_dirs}/gtk-4.0/ rw,
  owner @{user_cache_dirs}/gtk-4.0/vulkan-pipeline-cache/{,*} rw,
  owner @{user_cache_dirs}/gtkrc r,
  owner @{user_cache_dirs}/gtkrc-2.0 r,

  owner @{user_cache_dirs}/glycin/ w,
  owner @{user_cache_dirs}/glycin/usr/ w,
  owner @{user_cache_dirs}/glycin/usr/lib/ w,
  owner @{user_cache_dirs}/glycin/usr/lib/glycin-loaders/ w,
  owner @{user_cache_dirs}/glycin/usr/lib/glycin-loaders/@{d}+/ w,
  owner @{user_cache_dirs}/glycin/usr/lib/glycin-loaders/@{d}+/glycin-svg/ w,
  owner @{user_cache_dirs}/glycin/usr/lib/glycin-loaders/@{d}+/glycin-svg/fontconfig/ w,

  owner @{user_config_dirs}/gtk-2.0/ rw,
  owner @{user_config_dirs}/gtk-2.0/gtkfilechooser.ini* rw,

  owner @{user_config_dirs}/gtk-3.0/ rw,
  owner @{user_config_dirs}/gtk-3.0/bookmarks r,
  owner @{user_config_dirs}/gtk-3.0/colors.css r,
  owner @{user_config_dirs}/gtk-3.0/gtk.css r,
  owner @{user_config_dirs}/gtk-3.0/servers r,
  owner @{user_config_dirs}/gtk-3.0/settings.ini r,
  owner @{user_config_dirs}/gtk-3.0/window_decorations.css r,

  owner @{user_config_dirs}/gtk-4.0/ rw,
  owner @{user_config_dirs}/gtk-4.0/bookmarks r,
  owner @{user_config_dirs}/gtk-4.0/colors.css r,
  owner @{user_config_dirs}/gtk-4.0/gtk.css r,
  owner @{user_config_dirs}/gtk-4.0/servers r,
  owner @{user_config_dirs}/gtk-4.0/settings.ini r,
  owner @{user_config_dirs}/gtk-4.0/window_decorations.css r,

  owner @{tmp}/gdk-pixbuf-glycin-tmp.@{rand6} rw,

  include if exists <abstractions/gtk-strict.d>

# vim:syntax=apparmor
