Security

Token

There is no security token.

Firewall

main Name
Security enabled
Stateless

Configuration

Key Value
provider security.user.provider.concrete.app_user_provider
context main
entry_point App\Security\KbinAuthenticator
user_checker App\Security\UserChecker
access_denied_handler (none)
access_denied_url (none)
authenticators
[
  "two_factor"
  "remember_me"
  "App\Security\KbinAuthenticator"
  "App\Security\FacebookAuthenticator"
  "App\Security\GoogleAuthenticator"
  "App\Security\GithubAuthenticator"
  "App\Security\KeycloakAuthenticator"
]

Listeners

Listener Duration Response
Symfony\Component\Security\Http\Firewall\ChannelListener {#723
  -map: Symfony\Component\Security\Http\AccessMap {#722 …}
  -logger: Monolog\Logger {#783 …}
  -httpPort: 80
  -httpsPort: 443
}
0.00 ms (none)
Symfony\Component\Security\Http\Firewall\ContextListener {#706
  -tokenStorage: Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage {#1017 …}
  -sessionKey: "_security_main"
  -logger: Monolog\Logger {#783 …}
  -userProviders: Symfony\Component\DependencyInjection\Argument\RewindableGenerator {#705 …}
  -dispatcher: Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher {#747 …}
  -registered: false
  -trustResolver: Scheb\TwoFactorBundle\Security\Authentication\AuthenticationTrustResolver {#780 …}
  -sessionTrackerEnabler: Symfony\Component\Security\Core\Authentication\Token\Storage\UsageTrackingTokenStorage::enableUsageTracking(): void {#703 …}
}
8.57 ms (none)
Symfony\Component\Security\Http\Firewall\AuthenticatorManagerListener {#584
  -authenticatorManager: Symfony\Component\Security\Http\Authentication\AuthenticatorManager {#595 …}
}
0.00 ms (none)
Scheb\TwoFactorBundle\Security\Http\Firewall\TwoFactorAccessListener {#582
  -twoFactorFirewallConfig: Scheb\TwoFactorBundle\Security\TwoFactor\TwoFactorFirewallConfig {#842 …}
  -tokenStorage: Symfony\Component\Security\Core\Authentication\Token\Storage\UsageTrackingTokenStorage {#1018 …}
  -twoFactorAccessDecider: Scheb\TwoFactorBundle\Security\Authorization\TwoFactorAccessDecider {#581 …}
}
0.04 ms (none)
Symfony\Component\Security\Http\Firewall\AccessListener {#579
  -tokenStorage: Symfony\Component\Security\Core\Authentication\Token\Storage\UsageTrackingTokenStorage {#1018 …}
  -accessDecisionManager: Symfony\Component\Security\Core\Authorization\TraceableAccessDecisionManager {#937 …}
  -map: Symfony\Component\Security\Http\AccessMap {#722 …}
}
0.00 ms (none)
Symfony\Component\Security\Http\Firewall\LogoutListener {#786
  -tokenStorage: Symfony\Component\Security\Core\Authentication\Token\Storage\UsageTrackingTokenStorage {#1018 …}
  -options: [
    "csrf_parameter" => "_csrf_token"
    "csrf_token_id" => "logout"
    "logout_path" => "app_logout"
  ]
  -httpUtils: Symfony\Component\Security\Http\HttpUtils {#841 …}
  -csrfTokenManager: Symfony\Component\Security\Csrf\CsrfTokenManager {#1015 …}
  -eventDispatcher: Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher {#747 …}
}
0.00 ms (none)

Authenticators

No authenticators have been recorded. Check previous profiles on your authentication endpoint.

Access Decision

affirmative Strategy
# Voter class
1
"Symfony\Component\Security\Core\Authorization\Voter\AuthenticatedVoter"
2
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
3
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
4
"Symfony\Component\Security\Core\Authorization\Voter\ExpressionVoter"
5
"App\Security\Voter\EntryCommentVoter"
6
"App\Security\Voter\EntryVoter"
7
"App\Security\Voter\MagazineVoter"
8
"App\Security\Voter\MessageThreadVoter"
9
"App\Security\Voter\MessageVoter"
10
"App\Security\Voter\NotificationVoter"
11
"App\Security\Voter\OAuth2UserConsentVoter"
12
"App\Security\Voter\PostCommentVoter"
13
"App\Security\Voter\PostVoter"
14
"App\Security\Voter\UserVoter"

Access decision log

# Result Attributes Object
1 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
2 DENIED moderate
App\Entity\Entry {#2419
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +magazine: App\Entity\Magazine {#265
    +icon: Proxies\__CG__\App\Entity\Image {#246 …}
    +name: "linux@lemmy.ml"
    +title: "linux"
    +description: """
      From Wikipedia, the free encyclopedia\n
      \n
      Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
      \n
      Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
      \n
      ### Rules\n
      \n
      - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
      - No misinformation\n
      - No NSFW content\n
      - No hate speech, bigotry, etc\n
      \n
      ### Related Communities\n
      \n
      - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
      - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
      - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
      - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
      \n
      Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
      """
    +rules: null
    +subscriptionsCount: 1
    +entryCount: 1406
    +entryCommentCount: 28632
    +postCount: 6
    +postCommentCount: 214
    +isAdult: false
    +customCss: null
    +lastActive: DateTime @1729583542 {#275
      date: 2024-10-22 09:52:22.0 +02:00
    }
    +markedForDeletionAt: null
    +tags: null
    +moderators: Doctrine\ORM\PersistentCollection {#237 …}
    +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
    +entries: Doctrine\ORM\PersistentCollection {#180 …}
    +posts: Doctrine\ORM\PersistentCollection {#138 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
    +bans: Doctrine\ORM\PersistentCollection {#117 …}
    +reports: Doctrine\ORM\PersistentCollection {#103 …}
    +badges: Doctrine\ORM\PersistentCollection {#81 …}
    +logs: Doctrine\ORM\PersistentCollection {#71 …}
    +awards: Doctrine\ORM\PersistentCollection {#1346 …}
    +categories: Doctrine\ORM\PersistentCollection {#1823 …}
    -id: 73
    +apId: "linux@lemmy.ml"
    +apProfileId: "https://lemmy.ml/c/linux"
    +apPublicUrl: "https://lemmy.ml/c/linux"
    +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
    +apInboxUrl: "https://lemmy.ml/inbox"
    +apDomain: "lemmy.ml"
    +apPreferredUsername: "linux"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: null
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1729583596 {#269
      date: 2024-10-22 09:53:16.0 +02:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1698929468 {#271
      date: 2023-11-02 13:51:08.0 +01:00
    }
  }
  +image: Proxies\__CG__\App\Entity\Image {#1943 …}
  +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
  +slug: "Louvre-C-library-for-building-Wayland-compositors"
  +title: "Louvre: C++ library for building Wayland compositors."
  +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
  +body: """
    Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
    \n
    It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
    \n
    The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
    \n
    You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
    \n
    I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
    \n
    Greetings!
    """
  +type: "image"
  +lang: "en"
  +isOc: false
  +hasEmbed: true
  +commentCount: 34
  +favouriteCount: 219
  +score: 0
  +isAdult: false
  +sticky: false
  +lastActive: DateTime @1700324159 {#2414
    date: 2023-11-18 17:15:59.0 +01:00
  }
  +ip: null
  +adaAmount: 0
  +tags: null
  +mentions: null
  +comments: Doctrine\ORM\PersistentCollection {#1866 …}
  +votes: Doctrine\ORM\PersistentCollection {#1966 …}
  +reports: Doctrine\ORM\PersistentCollection {#1946 …}
  +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
  +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
  +badges: Doctrine\ORM\PersistentCollection {#2439 …}
  +children: []
  -id: 13052
  -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
  -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
  +cross: false
  +upVotes: 0
  +downVotes: 0
  +ranking: 1700075572
  +visibility: "visible             "
  +apId: "https://lemmy.world/post/8258740"
  +editedAt: null
  +createdAt: DateTimeImmutable @1699989172 {#1793
    date: 2023-11-14 20:12:52.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS DENIED
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
3 DENIED edit
App\Entity\Entry {#2419
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +magazine: App\Entity\Magazine {#265
    +icon: Proxies\__CG__\App\Entity\Image {#246 …}
    +name: "linux@lemmy.ml"
    +title: "linux"
    +description: """
      From Wikipedia, the free encyclopedia\n
      \n
      Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
      \n
      Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
      \n
      ### Rules\n
      \n
      - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
      - No misinformation\n
      - No NSFW content\n
      - No hate speech, bigotry, etc\n
      \n
      ### Related Communities\n
      \n
      - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
      - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
      - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
      - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
      \n
      Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
      """
    +rules: null
    +subscriptionsCount: 1
    +entryCount: 1406
    +entryCommentCount: 28632
    +postCount: 6
    +postCommentCount: 214
    +isAdult: false
    +customCss: null
    +lastActive: DateTime @1729583542 {#275
      date: 2024-10-22 09:52:22.0 +02:00
    }
    +markedForDeletionAt: null
    +tags: null
    +moderators: Doctrine\ORM\PersistentCollection {#237 …}
    +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
    +entries: Doctrine\ORM\PersistentCollection {#180 …}
    +posts: Doctrine\ORM\PersistentCollection {#138 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
    +bans: Doctrine\ORM\PersistentCollection {#117 …}
    +reports: Doctrine\ORM\PersistentCollection {#103 …}
    +badges: Doctrine\ORM\PersistentCollection {#81 …}
    +logs: Doctrine\ORM\PersistentCollection {#71 …}
    +awards: Doctrine\ORM\PersistentCollection {#1346 …}
    +categories: Doctrine\ORM\PersistentCollection {#1823 …}
    -id: 73
    +apId: "linux@lemmy.ml"
    +apProfileId: "https://lemmy.ml/c/linux"
    +apPublicUrl: "https://lemmy.ml/c/linux"
    +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
    +apInboxUrl: "https://lemmy.ml/inbox"
    +apDomain: "lemmy.ml"
    +apPreferredUsername: "linux"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: null
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1729583596 {#269
      date: 2024-10-22 09:53:16.0 +02:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1698929468 {#271
      date: 2023-11-02 13:51:08.0 +01:00
    }
  }
  +image: Proxies\__CG__\App\Entity\Image {#1943 …}
  +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
  +slug: "Louvre-C-library-for-building-Wayland-compositors"
  +title: "Louvre: C++ library for building Wayland compositors."
  +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
  +body: """
    Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
    \n
    It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
    \n
    The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
    \n
    You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
    \n
    I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
    \n
    Greetings!
    """
  +type: "image"
  +lang: "en"
  +isOc: false
  +hasEmbed: true
  +commentCount: 34
  +favouriteCount: 219
  +score: 0
  +isAdult: false
  +sticky: false
  +lastActive: DateTime @1700324159 {#2414
    date: 2023-11-18 17:15:59.0 +01:00
  }
  +ip: null
  +adaAmount: 0
  +tags: null
  +mentions: null
  +comments: Doctrine\ORM\PersistentCollection {#1866 …}
  +votes: Doctrine\ORM\PersistentCollection {#1966 …}
  +reports: Doctrine\ORM\PersistentCollection {#1946 …}
  +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
  +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
  +badges: Doctrine\ORM\PersistentCollection {#2439 …}
  +children: []
  -id: 13052
  -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
  -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
  +cross: false
  +upVotes: 0
  +downVotes: 0
  +ranking: 1700075572
  +visibility: "visible             "
  +apId: "https://lemmy.world/post/8258740"
  +editedAt: null
  +createdAt: DateTimeImmutable @1699989172 {#1793
    date: 2023-11-14 20:12:52.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS DENIED
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
4 DENIED moderate
App\Entity\Entry {#2419
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +magazine: App\Entity\Magazine {#265
    +icon: Proxies\__CG__\App\Entity\Image {#246 …}
    +name: "linux@lemmy.ml"
    +title: "linux"
    +description: """
      From Wikipedia, the free encyclopedia\n
      \n
      Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
      \n
      Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
      \n
      ### Rules\n
      \n
      - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
      - No misinformation\n
      - No NSFW content\n
      - No hate speech, bigotry, etc\n
      \n
      ### Related Communities\n
      \n
      - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
      - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
      - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
      - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
      \n
      Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
      """
    +rules: null
    +subscriptionsCount: 1
    +entryCount: 1406
    +entryCommentCount: 28632
    +postCount: 6
    +postCommentCount: 214
    +isAdult: false
    +customCss: null
    +lastActive: DateTime @1729583542 {#275
      date: 2024-10-22 09:52:22.0 +02:00
    }
    +markedForDeletionAt: null
    +tags: null
    +moderators: Doctrine\ORM\PersistentCollection {#237 …}
    +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
    +entries: Doctrine\ORM\PersistentCollection {#180 …}
    +posts: Doctrine\ORM\PersistentCollection {#138 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
    +bans: Doctrine\ORM\PersistentCollection {#117 …}
    +reports: Doctrine\ORM\PersistentCollection {#103 …}
    +badges: Doctrine\ORM\PersistentCollection {#81 …}
    +logs: Doctrine\ORM\PersistentCollection {#71 …}
    +awards: Doctrine\ORM\PersistentCollection {#1346 …}
    +categories: Doctrine\ORM\PersistentCollection {#1823 …}
    -id: 73
    +apId: "linux@lemmy.ml"
    +apProfileId: "https://lemmy.ml/c/linux"
    +apPublicUrl: "https://lemmy.ml/c/linux"
    +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
    +apInboxUrl: "https://lemmy.ml/inbox"
    +apDomain: "lemmy.ml"
    +apPreferredUsername: "linux"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: null
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1729583596 {#269
      date: 2024-10-22 09:53:16.0 +02:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1698929468 {#271
      date: 2023-11-02 13:51:08.0 +01:00
    }
  }
  +image: Proxies\__CG__\App\Entity\Image {#1943 …}
  +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
  +slug: "Louvre-C-library-for-building-Wayland-compositors"
  +title: "Louvre: C++ library for building Wayland compositors."
  +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
  +body: """
    Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
    \n
    It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
    \n
    The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
    \n
    You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
    \n
    I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
    \n
    Greetings!
    """
  +type: "image"
  +lang: "en"
  +isOc: false
  +hasEmbed: true
  +commentCount: 34
  +favouriteCount: 219
  +score: 0
  +isAdult: false
  +sticky: false
  +lastActive: DateTime @1700324159 {#2414
    date: 2023-11-18 17:15:59.0 +01:00
  }
  +ip: null
  +adaAmount: 0
  +tags: null
  +mentions: null
  +comments: Doctrine\ORM\PersistentCollection {#1866 …}
  +votes: Doctrine\ORM\PersistentCollection {#1966 …}
  +reports: Doctrine\ORM\PersistentCollection {#1946 …}
  +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
  +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
  +badges: Doctrine\ORM\PersistentCollection {#2439 …}
  +children: []
  -id: 13052
  -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
  -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
  +cross: false
  +upVotes: 0
  +downVotes: 0
  +ranking: 1700075572
  +visibility: "visible             "
  +apId: "https://lemmy.world/post/8258740"
  +editedAt: null
  +createdAt: DateTimeImmutable @1699989172 {#1793
    date: 2023-11-14 20:12:52.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS DENIED
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
5 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
6 DENIED moderate
App\Entity\EntryComment {#4051
  +user: App\Entity\User {#3999 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: null
  +root: null
  +body: "You mentioned it being easier then wlroots, but [wayfire](https://wayfire.org/) and [phoc](https://gitlab.gnome.org/World/Phosh/phoc) reportedly act as high level abstractions on top of wlroots that could be used to make it easier to create window managers (wayfire author explicitly mentioned it), Maybe it will be good to create a comparison with these projects? or even divert your future efforts to one of them?"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 3
  +score: 0
  +lastActive: DateTime @1700330280 {#4060
    date: 2023-11-18 18:58:00.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4049 …}
  +nested: Doctrine\ORM\PersistentCollection {#4047 …}
  +votes: Doctrine\ORM\PersistentCollection {#4045 …}
  +reports: Doctrine\ORM\PersistentCollection {#4043 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4011 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4015 …}
  -id: 127198
  -bodyTs: "'/)':12 '/world/phosh/phoc)':17 'abstract':23 'act':19 'author':41 'comparison':53 'could':29 'creat':37,51 'divert':59 'easier':5,35 'effort':62 'even':58 'explicit':42 'futur':61 'gitlab.gnome.org':16 'gitlab.gnome.org/world/phosh/phoc)':15 'good':49 'high':21 'level':22 'make':33 'manag':39 'mayb':45 'mention':2,43 'one':64 'phoc':14 'project':56 'report':18 'top':25 'use':31 'wayfir':9,40 'wayfire.org':11 'wayfire.org/)':10 'window':38 'wlroot':7,27"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.ml/comment/5823831"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700061193 {#3996
    date: 2023-11-15 16:13:13.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
7 DENIED edit
App\Entity\EntryComment {#4051
  +user: App\Entity\User {#3999 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: null
  +root: null
  +body: "You mentioned it being easier then wlroots, but [wayfire](https://wayfire.org/) and [phoc](https://gitlab.gnome.org/World/Phosh/phoc) reportedly act as high level abstractions on top of wlroots that could be used to make it easier to create window managers (wayfire author explicitly mentioned it), Maybe it will be good to create a comparison with these projects? or even divert your future efforts to one of them?"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 3
  +score: 0
  +lastActive: DateTime @1700330280 {#4060
    date: 2023-11-18 18:58:00.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4049 …}
  +nested: Doctrine\ORM\PersistentCollection {#4047 …}
  +votes: Doctrine\ORM\PersistentCollection {#4045 …}
  +reports: Doctrine\ORM\PersistentCollection {#4043 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4011 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4015 …}
  -id: 127198
  -bodyTs: "'/)':12 '/world/phosh/phoc)':17 'abstract':23 'act':19 'author':41 'comparison':53 'could':29 'creat':37,51 'divert':59 'easier':5,35 'effort':62 'even':58 'explicit':42 'futur':61 'gitlab.gnome.org':16 'gitlab.gnome.org/world/phosh/phoc)':15 'good':49 'high':21 'level':22 'make':33 'manag':39 'mayb':45 'mention':2,43 'one':64 'phoc':14 'project':56 'report':18 'top':25 'use':31 'wayfir':9,40 'wayfire.org':11 'wayfire.org/)':10 'window':38 'wlroot':7,27"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.ml/comment/5823831"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700061193 {#3996
    date: 2023-11-15 16:13:13.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
8 DENIED moderate
App\Entity\EntryComment {#4051
  +user: App\Entity\User {#3999 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: null
  +root: null
  +body: "You mentioned it being easier then wlroots, but [wayfire](https://wayfire.org/) and [phoc](https://gitlab.gnome.org/World/Phosh/phoc) reportedly act as high level abstractions on top of wlroots that could be used to make it easier to create window managers (wayfire author explicitly mentioned it), Maybe it will be good to create a comparison with these projects? or even divert your future efforts to one of them?"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 3
  +score: 0
  +lastActive: DateTime @1700330280 {#4060
    date: 2023-11-18 18:58:00.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4049 …}
  +nested: Doctrine\ORM\PersistentCollection {#4047 …}
  +votes: Doctrine\ORM\PersistentCollection {#4045 …}
  +reports: Doctrine\ORM\PersistentCollection {#4043 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4011 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4015 …}
  -id: 127198
  -bodyTs: "'/)':12 '/world/phosh/phoc)':17 'abstract':23 'act':19 'author':41 'comparison':53 'could':29 'creat':37,51 'divert':59 'easier':5,35 'effort':62 'even':58 'explicit':42 'futur':61 'gitlab.gnome.org':16 'gitlab.gnome.org/world/phosh/phoc)':15 'good':49 'high':21 'level':22 'make':33 'manag':39 'mayb':45 'mention':2,43 'one':64 'phoc':14 'project':56 'report':18 'top':25 'use':31 'wayfir':9,40 'wayfire.org':11 'wayfire.org/)':10 'window':38 'wlroot':7,27"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.ml/comment/5823831"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700061193 {#3996
    date: 2023-11-15 16:13:13.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
9 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
10 DENIED moderate
App\Entity\EntryComment {#4940
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4051
    +user: App\Entity\User {#3999 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: "You mentioned it being easier then wlroots, but [wayfire](https://wayfire.org/) and [phoc](https://gitlab.gnome.org/World/Phosh/phoc) reportedly act as high level abstractions on top of wlroots that could be used to make it easier to create window managers (wayfire author explicitly mentioned it), Maybe it will be good to create a comparison with these projects? or even divert your future efforts to one of them?"
    +lang: "en"
    +isAdult: false
    +favouriteCount: 3
    +score: 0
    +lastActive: DateTime @1700330280 {#4060
      date: 2023-11-18 18:58:00.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4049 …}
    +nested: Doctrine\ORM\PersistentCollection {#4047 …}
    +votes: Doctrine\ORM\PersistentCollection {#4045 …}
    +reports: Doctrine\ORM\PersistentCollection {#4043 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4011 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4015 …}
    -id: 127198
    -bodyTs: "'/)':12 '/world/phosh/phoc)':17 'abstract':23 'act':19 'author':41 'comparison':53 'could':29 'creat':37,51 'divert':59 'easier':5,35 'effort':62 'even':58 'explicit':42 'futur':61 'gitlab.gnome.org':16 'gitlab.gnome.org/world/phosh/phoc)':15 'good':49 'high':21 'level':22 'make':33 'manag':39 'mayb':45 'mention':2,43 'one':64 'phoc':14 'project':56 'report':18 'top':25 'use':31 'wayfir':9,40 'wayfire.org':11 'wayfire.org/)':10 'window':38 'wlroot':7,27"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.ml/comment/5823831"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700061193 {#3996
      date: 2023-11-15 16:13:13.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4051}
  +body: "I’m not sure if I explicitly mentioned that it’s easier than wlroots, but I believe its design can considerably ease the learning curve for newcomers. While I’ve read about those projects, I haven’t had the chance to try them myself. Although I’d be interested in contributing to their development, I don’t intend to abandon Louvre. I find it beneficial that there are different alternatives, as each can bring unique and clever ideas to enhance various aspects, ultimately improving the overall design across the board."
  +lang: "en"
  +isAdult: false
  +favouriteCount: 4
  +score: 0
  +lastActive: DateTime @1700069987 {#4938
    date: 2023-11-15 18:39:47.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@wiki_me@lemmy.ml"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4941 …}
  +nested: Doctrine\ORM\PersistentCollection {#4943 …}
  +votes: Doctrine\ORM\PersistentCollection {#4945 …}
  +reports: Doctrine\ORM\PersistentCollection {#4947 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4949 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4951 …}
  -id: 127523
  -bodyTs: "'abandon':60 'across':88 'altern':70 'although':45 'aspect':82 'believ':17 'benefici':65 'board':90 'bring':74 'chanc':40 'clever':77 'consider':21 'contribut':51 'curv':25 'd':47 'design':19,87 'develop':54 'differ':69 'eas':22 'easier':12 'enhanc':80 'explicit':7 'find':63 'haven':36 'idea':78 'improv':84 'intend':58 'interest':49 'learn':24 'louvr':61 'm':2 'mention':8 'newcom':27 'overal':86 'project':34 'read':31 'sure':4 'tri':42 'ultim':83 'uniqu':75 'various':81 've':30 'wlroot':14"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5336163"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700069987 {#4939
    date: 2023-11-15 18:39:47.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
11 DENIED edit
App\Entity\EntryComment {#4940
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4051
    +user: App\Entity\User {#3999 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: "You mentioned it being easier then wlroots, but [wayfire](https://wayfire.org/) and [phoc](https://gitlab.gnome.org/World/Phosh/phoc) reportedly act as high level abstractions on top of wlroots that could be used to make it easier to create window managers (wayfire author explicitly mentioned it), Maybe it will be good to create a comparison with these projects? or even divert your future efforts to one of them?"
    +lang: "en"
    +isAdult: false
    +favouriteCount: 3
    +score: 0
    +lastActive: DateTime @1700330280 {#4060
      date: 2023-11-18 18:58:00.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4049 …}
    +nested: Doctrine\ORM\PersistentCollection {#4047 …}
    +votes: Doctrine\ORM\PersistentCollection {#4045 …}
    +reports: Doctrine\ORM\PersistentCollection {#4043 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4011 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4015 …}
    -id: 127198
    -bodyTs: "'/)':12 '/world/phosh/phoc)':17 'abstract':23 'act':19 'author':41 'comparison':53 'could':29 'creat':37,51 'divert':59 'easier':5,35 'effort':62 'even':58 'explicit':42 'futur':61 'gitlab.gnome.org':16 'gitlab.gnome.org/world/phosh/phoc)':15 'good':49 'high':21 'level':22 'make':33 'manag':39 'mayb':45 'mention':2,43 'one':64 'phoc':14 'project':56 'report':18 'top':25 'use':31 'wayfir':9,40 'wayfire.org':11 'wayfire.org/)':10 'window':38 'wlroot':7,27"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.ml/comment/5823831"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700061193 {#3996
      date: 2023-11-15 16:13:13.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4051}
  +body: "I’m not sure if I explicitly mentioned that it’s easier than wlroots, but I believe its design can considerably ease the learning curve for newcomers. While I’ve read about those projects, I haven’t had the chance to try them myself. Although I’d be interested in contributing to their development, I don’t intend to abandon Louvre. I find it beneficial that there are different alternatives, as each can bring unique and clever ideas to enhance various aspects, ultimately improving the overall design across the board."
  +lang: "en"
  +isAdult: false
  +favouriteCount: 4
  +score: 0
  +lastActive: DateTime @1700069987 {#4938
    date: 2023-11-15 18:39:47.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@wiki_me@lemmy.ml"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4941 …}
  +nested: Doctrine\ORM\PersistentCollection {#4943 …}
  +votes: Doctrine\ORM\PersistentCollection {#4945 …}
  +reports: Doctrine\ORM\PersistentCollection {#4947 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4949 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4951 …}
  -id: 127523
  -bodyTs: "'abandon':60 'across':88 'altern':70 'although':45 'aspect':82 'believ':17 'benefici':65 'board':90 'bring':74 'chanc':40 'clever':77 'consider':21 'contribut':51 'curv':25 'd':47 'design':19,87 'develop':54 'differ':69 'eas':22 'easier':12 'enhanc':80 'explicit':7 'find':63 'haven':36 'idea':78 'improv':84 'intend':58 'interest':49 'learn':24 'louvr':61 'm':2 'mention':8 'newcom':27 'overal':86 'project':34 'read':31 'sure':4 'tri':42 'ultim':83 'uniqu':75 'various':81 've':30 'wlroot':14"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5336163"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700069987 {#4939
    date: 2023-11-15 18:39:47.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
12 DENIED moderate
App\Entity\EntryComment {#4940
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4051
    +user: App\Entity\User {#3999 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: "You mentioned it being easier then wlroots, but [wayfire](https://wayfire.org/) and [phoc](https://gitlab.gnome.org/World/Phosh/phoc) reportedly act as high level abstractions on top of wlroots that could be used to make it easier to create window managers (wayfire author explicitly mentioned it), Maybe it will be good to create a comparison with these projects? or even divert your future efforts to one of them?"
    +lang: "en"
    +isAdult: false
    +favouriteCount: 3
    +score: 0
    +lastActive: DateTime @1700330280 {#4060
      date: 2023-11-18 18:58:00.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4049 …}
    +nested: Doctrine\ORM\PersistentCollection {#4047 …}
    +votes: Doctrine\ORM\PersistentCollection {#4045 …}
    +reports: Doctrine\ORM\PersistentCollection {#4043 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4011 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4015 …}
    -id: 127198
    -bodyTs: "'/)':12 '/world/phosh/phoc)':17 'abstract':23 'act':19 'author':41 'comparison':53 'could':29 'creat':37,51 'divert':59 'easier':5,35 'effort':62 'even':58 'explicit':42 'futur':61 'gitlab.gnome.org':16 'gitlab.gnome.org/world/phosh/phoc)':15 'good':49 'high':21 'level':22 'make':33 'manag':39 'mayb':45 'mention':2,43 'one':64 'phoc':14 'project':56 'report':18 'top':25 'use':31 'wayfir':9,40 'wayfire.org':11 'wayfire.org/)':10 'window':38 'wlroot':7,27"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.ml/comment/5823831"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700061193 {#3996
      date: 2023-11-15 16:13:13.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4051}
  +body: "I’m not sure if I explicitly mentioned that it’s easier than wlroots, but I believe its design can considerably ease the learning curve for newcomers. While I’ve read about those projects, I haven’t had the chance to try them myself. Although I’d be interested in contributing to their development, I don’t intend to abandon Louvre. I find it beneficial that there are different alternatives, as each can bring unique and clever ideas to enhance various aspects, ultimately improving the overall design across the board."
  +lang: "en"
  +isAdult: false
  +favouriteCount: 4
  +score: 0
  +lastActive: DateTime @1700069987 {#4938
    date: 2023-11-15 18:39:47.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@wiki_me@lemmy.ml"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4941 …}
  +nested: Doctrine\ORM\PersistentCollection {#4943 …}
  +votes: Doctrine\ORM\PersistentCollection {#4945 …}
  +reports: Doctrine\ORM\PersistentCollection {#4947 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4949 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4951 …}
  -id: 127523
  -bodyTs: "'abandon':60 'across':88 'altern':70 'although':45 'aspect':82 'believ':17 'benefici':65 'board':90 'bring':74 'chanc':40 'clever':77 'consider':21 'contribut':51 'curv':25 'd':47 'design':19,87 'develop':54 'differ':69 'eas':22 'easier':12 'enhanc':80 'explicit':7 'find':63 'haven':36 'idea':78 'improv':84 'intend':58 'interest':49 'learn':24 'louvr':61 'm':2 'mention':8 'newcom':27 'overal':86 'project':34 'read':31 'sure':4 'tri':42 'ultim':83 'uniqu':75 'various':81 've':30 'wlroot':14"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5336163"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700069987 {#4939
    date: 2023-11-15 18:39:47.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
13 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
14 DENIED moderate
App\Entity\EntryComment {#4083
  +user: App\Entity\User {#4072 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: null
  +root: null
  +body: """
    Many people have predicted the death of the small, independent window manager with the coming of Wayland. I have heard multiple times that only large projects like GNOME and KDE would be able to take on the burden of making a compositor.\n
    \n
    Now, I do think that lots of no longer actively developed window managers could get left behind. But the idea that it will be too complicated to create a window manager now is turning out to be wrong.\n
    \n
    First, fewer desktop environments are getting left behind than feared. XFCE, Cinnamon, and MATE all seem to have Wayland plans now.\n
    \n
    The big change is the appearance of not one but multiple compositor libraries designed to make it easier to create a window manager for Wayland. Some of them look like they might make it easier than it was under X. The approach taken by this one makes the idea of hacking around with it very inviting.\n
    \n
    Although having to create a compositor has made things difficultly until now, I think the idea of decoupling the compositor for Wayland is going to look smart in the long run.\n
    \n
    Being separate from Wayland, compositor devs are free to experiment and window manager authors can select the one that best maps to their goals.\n
    \n
    I was reading up on Oasis Linux yesterday. It comes with a Wayland compositor ( SWC ) and tiling window manager ( Velox ) that are less than 20,000 lines of code combined!\n
    \n
    It would not be practical for a light-weight distro to trim down Xorg like that. But I the compositor is separate, it can be either smaller or feature rich. SWC is XWayland compatible but obviously that is going to add more size if you need it.\n
    \n
    Looking forward to the window manager innovation that projects like Louvre enable.
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 16
  +score: 0
  +lastActive: DateTime @1706009502 {#4089
    date: 2024-01-23 12:31:42.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4088 …}
  +nested: Doctrine\ORM\PersistentCollection {#4087 …}
  +votes: Doctrine\ORM\PersistentCollection {#4078 …}
  +reports: Doctrine\ORM\PersistentCollection {#4081 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4076 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4074 …}
  -id: 126228
  -bodyTs: "'000':238 '20':237 'abl':33 'activ':52 'add':284 'although':158 'appear':107 'approach':143 'around':153 'author':202 'behind':59,88 'best':208 'big':103 'burden':38 'chang':104 'cinnamon':92 'code':241 'combin':242 'come':15,222 'compat':277 'complic':68 'compositor':42,113,163,177,193,226,263 'could':56 'creat':70,121,161 'death':6 'decoupl':175 'design':115 'desktop':83 'dev':194 'develop':53 'difficult':167 'distro':253 'easier':119,136 'either':269 'enabl':302 'environ':84 'experi':198 'fear':90 'featur':272 'fewer':82 'first':81 'forward':292 'free':196 'get':57,86 'gnome':28 'go':181,282 'goal':212 'hack':152 'heard':20 'idea':62,150,173 'independ':10 'innov':297 'invit':157 'kde':30 'larg':25 'left':58,87 'less':235 'librari':114 'light':251 'light-weight':250 'like':27,131,258,300 'line':239 'linux':219 'long':187 'longer':51 'look':130,183,291 'lot':48 'louvr':301 'made':165 'make':40,117,134,148 'manag':12,55,73,124,201,231,296 'mani':1 'map':209 'mate':94 'might':133 'multipl':21,112 'need':289 'oasi':218 'obvious':279 'one':110,147,206 'peopl':2 'plan':100 'practic':247 'predict':4 'project':26,299 'read':215 'rich':273 'run':188 'seem':96 'select':204 'separ':190,265 'size':286 'small':9 'smaller':270 'smart':184 'swc':227,274 'take':35 'taken':144 'thing':166 'think':46,171 'tile':229 'time':22 'trim':255 'turn':76 'velox':232 'wayland':17,99,126,179,192,225 'weight':252 'window':11,54,72,123,200,230,295 'would':31,244 'wrong':80 'x':141 'xfce':91 'xorg':257 'xwayland':276 'yesterday':220"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://programming.dev/comment/4837543"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700027677 {#4094
    date: 2023-11-15 06:54:37.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
15 DENIED edit
App\Entity\EntryComment {#4083
  +user: App\Entity\User {#4072 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: null
  +root: null
  +body: """
    Many people have predicted the death of the small, independent window manager with the coming of Wayland. I have heard multiple times that only large projects like GNOME and KDE would be able to take on the burden of making a compositor.\n
    \n
    Now, I do think that lots of no longer actively developed window managers could get left behind. But the idea that it will be too complicated to create a window manager now is turning out to be wrong.\n
    \n
    First, fewer desktop environments are getting left behind than feared. XFCE, Cinnamon, and MATE all seem to have Wayland plans now.\n
    \n
    The big change is the appearance of not one but multiple compositor libraries designed to make it easier to create a window manager for Wayland. Some of them look like they might make it easier than it was under X. The approach taken by this one makes the idea of hacking around with it very inviting.\n
    \n
    Although having to create a compositor has made things difficultly until now, I think the idea of decoupling the compositor for Wayland is going to look smart in the long run.\n
    \n
    Being separate from Wayland, compositor devs are free to experiment and window manager authors can select the one that best maps to their goals.\n
    \n
    I was reading up on Oasis Linux yesterday. It comes with a Wayland compositor ( SWC ) and tiling window manager ( Velox ) that are less than 20,000 lines of code combined!\n
    \n
    It would not be practical for a light-weight distro to trim down Xorg like that. But I the compositor is separate, it can be either smaller or feature rich. SWC is XWayland compatible but obviously that is going to add more size if you need it.\n
    \n
    Looking forward to the window manager innovation that projects like Louvre enable.
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 16
  +score: 0
  +lastActive: DateTime @1706009502 {#4089
    date: 2024-01-23 12:31:42.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4088 …}
  +nested: Doctrine\ORM\PersistentCollection {#4087 …}
  +votes: Doctrine\ORM\PersistentCollection {#4078 …}
  +reports: Doctrine\ORM\PersistentCollection {#4081 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4076 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4074 …}
  -id: 126228
  -bodyTs: "'000':238 '20':237 'abl':33 'activ':52 'add':284 'although':158 'appear':107 'approach':143 'around':153 'author':202 'behind':59,88 'best':208 'big':103 'burden':38 'chang':104 'cinnamon':92 'code':241 'combin':242 'come':15,222 'compat':277 'complic':68 'compositor':42,113,163,177,193,226,263 'could':56 'creat':70,121,161 'death':6 'decoupl':175 'design':115 'desktop':83 'dev':194 'develop':53 'difficult':167 'distro':253 'easier':119,136 'either':269 'enabl':302 'environ':84 'experi':198 'fear':90 'featur':272 'fewer':82 'first':81 'forward':292 'free':196 'get':57,86 'gnome':28 'go':181,282 'goal':212 'hack':152 'heard':20 'idea':62,150,173 'independ':10 'innov':297 'invit':157 'kde':30 'larg':25 'left':58,87 'less':235 'librari':114 'light':251 'light-weight':250 'like':27,131,258,300 'line':239 'linux':219 'long':187 'longer':51 'look':130,183,291 'lot':48 'louvr':301 'made':165 'make':40,117,134,148 'manag':12,55,73,124,201,231,296 'mani':1 'map':209 'mate':94 'might':133 'multipl':21,112 'need':289 'oasi':218 'obvious':279 'one':110,147,206 'peopl':2 'plan':100 'practic':247 'predict':4 'project':26,299 'read':215 'rich':273 'run':188 'seem':96 'select':204 'separ':190,265 'size':286 'small':9 'smaller':270 'smart':184 'swc':227,274 'take':35 'taken':144 'thing':166 'think':46,171 'tile':229 'time':22 'trim':255 'turn':76 'velox':232 'wayland':17,99,126,179,192,225 'weight':252 'window':11,54,72,123,200,230,295 'would':31,244 'wrong':80 'x':141 'xfce':91 'xorg':257 'xwayland':276 'yesterday':220"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://programming.dev/comment/4837543"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700027677 {#4094
    date: 2023-11-15 06:54:37.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
16 DENIED moderate
App\Entity\EntryComment {#4083
  +user: App\Entity\User {#4072 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: null
  +root: null
  +body: """
    Many people have predicted the death of the small, independent window manager with the coming of Wayland. I have heard multiple times that only large projects like GNOME and KDE would be able to take on the burden of making a compositor.\n
    \n
    Now, I do think that lots of no longer actively developed window managers could get left behind. But the idea that it will be too complicated to create a window manager now is turning out to be wrong.\n
    \n
    First, fewer desktop environments are getting left behind than feared. XFCE, Cinnamon, and MATE all seem to have Wayland plans now.\n
    \n
    The big change is the appearance of not one but multiple compositor libraries designed to make it easier to create a window manager for Wayland. Some of them look like they might make it easier than it was under X. The approach taken by this one makes the idea of hacking around with it very inviting.\n
    \n
    Although having to create a compositor has made things difficultly until now, I think the idea of decoupling the compositor for Wayland is going to look smart in the long run.\n
    \n
    Being separate from Wayland, compositor devs are free to experiment and window manager authors can select the one that best maps to their goals.\n
    \n
    I was reading up on Oasis Linux yesterday. It comes with a Wayland compositor ( SWC ) and tiling window manager ( Velox ) that are less than 20,000 lines of code combined!\n
    \n
    It would not be practical for a light-weight distro to trim down Xorg like that. But I the compositor is separate, it can be either smaller or feature rich. SWC is XWayland compatible but obviously that is going to add more size if you need it.\n
    \n
    Looking forward to the window manager innovation that projects like Louvre enable.
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 16
  +score: 0
  +lastActive: DateTime @1706009502 {#4089
    date: 2024-01-23 12:31:42.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4088 …}
  +nested: Doctrine\ORM\PersistentCollection {#4087 …}
  +votes: Doctrine\ORM\PersistentCollection {#4078 …}
  +reports: Doctrine\ORM\PersistentCollection {#4081 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4076 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4074 …}
  -id: 126228
  -bodyTs: "'000':238 '20':237 'abl':33 'activ':52 'add':284 'although':158 'appear':107 'approach':143 'around':153 'author':202 'behind':59,88 'best':208 'big':103 'burden':38 'chang':104 'cinnamon':92 'code':241 'combin':242 'come':15,222 'compat':277 'complic':68 'compositor':42,113,163,177,193,226,263 'could':56 'creat':70,121,161 'death':6 'decoupl':175 'design':115 'desktop':83 'dev':194 'develop':53 'difficult':167 'distro':253 'easier':119,136 'either':269 'enabl':302 'environ':84 'experi':198 'fear':90 'featur':272 'fewer':82 'first':81 'forward':292 'free':196 'get':57,86 'gnome':28 'go':181,282 'goal':212 'hack':152 'heard':20 'idea':62,150,173 'independ':10 'innov':297 'invit':157 'kde':30 'larg':25 'left':58,87 'less':235 'librari':114 'light':251 'light-weight':250 'like':27,131,258,300 'line':239 'linux':219 'long':187 'longer':51 'look':130,183,291 'lot':48 'louvr':301 'made':165 'make':40,117,134,148 'manag':12,55,73,124,201,231,296 'mani':1 'map':209 'mate':94 'might':133 'multipl':21,112 'need':289 'oasi':218 'obvious':279 'one':110,147,206 'peopl':2 'plan':100 'practic':247 'predict':4 'project':26,299 'read':215 'rich':273 'run':188 'seem':96 'select':204 'separ':190,265 'size':286 'small':9 'smaller':270 'smart':184 'swc':227,274 'take':35 'taken':144 'thing':166 'think':46,171 'tile':229 'time':22 'trim':255 'turn':76 'velox':232 'wayland':17,99,126,179,192,225 'weight':252 'window':11,54,72,123,200,230,295 'would':31,244 'wrong':80 'x':141 'xfce':91 'xorg':257 'xwayland':276 'yesterday':220"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://programming.dev/comment/4837543"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700027677 {#4094
    date: 2023-11-15 06:54:37.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
17 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
18 DENIED moderate
App\Entity\EntryComment {#4924
  +user: Proxies\__CG__\App\Entity\User {#4925 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4083
    +user: App\Entity\User {#4072 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: """
      Many people have predicted the death of the small, independent window manager with the coming of Wayland. I have heard multiple times that only large projects like GNOME and KDE would be able to take on the burden of making a compositor.\n
      \n
      Now, I do think that lots of no longer actively developed window managers could get left behind. But the idea that it will be too complicated to create a window manager now is turning out to be wrong.\n
      \n
      First, fewer desktop environments are getting left behind than feared. XFCE, Cinnamon, and MATE all seem to have Wayland plans now.\n
      \n
      The big change is the appearance of not one but multiple compositor libraries designed to make it easier to create a window manager for Wayland. Some of them look like they might make it easier than it was under X. The approach taken by this one makes the idea of hacking around with it very inviting.\n
      \n
      Although having to create a compositor has made things difficultly until now, I think the idea of decoupling the compositor for Wayland is going to look smart in the long run.\n
      \n
      Being separate from Wayland, compositor devs are free to experiment and window manager authors can select the one that best maps to their goals.\n
      \n
      I was reading up on Oasis Linux yesterday. It comes with a Wayland compositor ( SWC ) and tiling window manager ( Velox ) that are less than 20,000 lines of code combined!\n
      \n
      It would not be practical for a light-weight distro to trim down Xorg like that. But I the compositor is separate, it can be either smaller or feature rich. SWC is XWayland compatible but obviously that is going to add more size if you need it.\n
      \n
      Looking forward to the window manager innovation that projects like Louvre enable.
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 16
    +score: 0
    +lastActive: DateTime @1706009502 {#4089
      date: 2024-01-23 12:31:42.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4088 …}
    +nested: Doctrine\ORM\PersistentCollection {#4087 …}
    +votes: Doctrine\ORM\PersistentCollection {#4078 …}
    +reports: Doctrine\ORM\PersistentCollection {#4081 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4076 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4074 …}
    -id: 126228
    -bodyTs: "'000':238 '20':237 'abl':33 'activ':52 'add':284 'although':158 'appear':107 'approach':143 'around':153 'author':202 'behind':59,88 'best':208 'big':103 'burden':38 'chang':104 'cinnamon':92 'code':241 'combin':242 'come':15,222 'compat':277 'complic':68 'compositor':42,113,163,177,193,226,263 'could':56 'creat':70,121,161 'death':6 'decoupl':175 'design':115 'desktop':83 'dev':194 'develop':53 'difficult':167 'distro':253 'easier':119,136 'either':269 'enabl':302 'environ':84 'experi':198 'fear':90 'featur':272 'fewer':82 'first':81 'forward':292 'free':196 'get':57,86 'gnome':28 'go':181,282 'goal':212 'hack':152 'heard':20 'idea':62,150,173 'independ':10 'innov':297 'invit':157 'kde':30 'larg':25 'left':58,87 'less':235 'librari':114 'light':251 'light-weight':250 'like':27,131,258,300 'line':239 'linux':219 'long':187 'longer':51 'look':130,183,291 'lot':48 'louvr':301 'made':165 'make':40,117,134,148 'manag':12,55,73,124,201,231,296 'mani':1 'map':209 'mate':94 'might':133 'multipl':21,112 'need':289 'oasi':218 'obvious':279 'one':110,147,206 'peopl':2 'plan':100 'practic':247 'predict':4 'project':26,299 'read':215 'rich':273 'run':188 'seem':96 'select':204 'separ':190,265 'size':286 'small':9 'smaller':270 'smart':184 'swc':227,274 'take':35 'taken':144 'thing':166 'think':46,171 'tile':229 'time':22 'trim':255 'turn':76 'velox':232 'wayland':17,99,126,179,192,225 'weight':252 'window':11,54,72,123,200,230,295 'would':31,244 'wrong':80 'x':141 'xfce':91 'xorg':257 'xwayland':276 'yesterday':220"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://programming.dev/comment/4837543"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700027677 {#4094
      date: 2023-11-15 06:54:37.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4083}
  +body: "People using X window manage will just keep using them. Wayland doesn’t offer anything valuable to most users so people will just keep using the managers they like. In 10-20 years we will get some nice, new managers that naturally will support Wayland and people will switch because of the features, not because ‘X insecure, Wayland awesome’ BS."
  +lang: "en"
  +isAdult: false
  +favouriteCount: 0
  +score: 0
  +lastActive: DateTime @1700062678 {#4922
    date: 2023-11-15 16:37:58.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@LeFantome@programming.dev"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4926 …}
  +nested: Doctrine\ORM\PersistentCollection {#4928 …}
  +votes: Doctrine\ORM\PersistentCollection {#4930 …}
  +reports: Doctrine\ORM\PersistentCollection {#4932 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4934 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4936 …}
  -id: 191165
  -bodyTs: "'-20':32 '10':31 'anyth':15 'awesom':59 'bs':60 'doesn':12 'featur':53 'get':36 'insecur':57 'keep':8,24 'like':29 'manag':5,27,40 'natur':42 'new':39 'nice':38 'offer':14 'peopl':1,21,47 'support':44 'switch':49 'use':2,9,25 'user':19 'valuabl':16 'wayland':11,45,58 'window':4 'x':3,56 'year':33"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://linux.community/comment/954496"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700062678 {#4923
    date: 2023-11-15 16:37:58.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
19 DENIED edit
App\Entity\EntryComment {#4924
  +user: Proxies\__CG__\App\Entity\User {#4925 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4083
    +user: App\Entity\User {#4072 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: """
      Many people have predicted the death of the small, independent window manager with the coming of Wayland. I have heard multiple times that only large projects like GNOME and KDE would be able to take on the burden of making a compositor.\n
      \n
      Now, I do think that lots of no longer actively developed window managers could get left behind. But the idea that it will be too complicated to create a window manager now is turning out to be wrong.\n
      \n
      First, fewer desktop environments are getting left behind than feared. XFCE, Cinnamon, and MATE all seem to have Wayland plans now.\n
      \n
      The big change is the appearance of not one but multiple compositor libraries designed to make it easier to create a window manager for Wayland. Some of them look like they might make it easier than it was under X. The approach taken by this one makes the idea of hacking around with it very inviting.\n
      \n
      Although having to create a compositor has made things difficultly until now, I think the idea of decoupling the compositor for Wayland is going to look smart in the long run.\n
      \n
      Being separate from Wayland, compositor devs are free to experiment and window manager authors can select the one that best maps to their goals.\n
      \n
      I was reading up on Oasis Linux yesterday. It comes with a Wayland compositor ( SWC ) and tiling window manager ( Velox ) that are less than 20,000 lines of code combined!\n
      \n
      It would not be practical for a light-weight distro to trim down Xorg like that. But I the compositor is separate, it can be either smaller or feature rich. SWC is XWayland compatible but obviously that is going to add more size if you need it.\n
      \n
      Looking forward to the window manager innovation that projects like Louvre enable.
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 16
    +score: 0
    +lastActive: DateTime @1706009502 {#4089
      date: 2024-01-23 12:31:42.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4088 …}
    +nested: Doctrine\ORM\PersistentCollection {#4087 …}
    +votes: Doctrine\ORM\PersistentCollection {#4078 …}
    +reports: Doctrine\ORM\PersistentCollection {#4081 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4076 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4074 …}
    -id: 126228
    -bodyTs: "'000':238 '20':237 'abl':33 'activ':52 'add':284 'although':158 'appear':107 'approach':143 'around':153 'author':202 'behind':59,88 'best':208 'big':103 'burden':38 'chang':104 'cinnamon':92 'code':241 'combin':242 'come':15,222 'compat':277 'complic':68 'compositor':42,113,163,177,193,226,263 'could':56 'creat':70,121,161 'death':6 'decoupl':175 'design':115 'desktop':83 'dev':194 'develop':53 'difficult':167 'distro':253 'easier':119,136 'either':269 'enabl':302 'environ':84 'experi':198 'fear':90 'featur':272 'fewer':82 'first':81 'forward':292 'free':196 'get':57,86 'gnome':28 'go':181,282 'goal':212 'hack':152 'heard':20 'idea':62,150,173 'independ':10 'innov':297 'invit':157 'kde':30 'larg':25 'left':58,87 'less':235 'librari':114 'light':251 'light-weight':250 'like':27,131,258,300 'line':239 'linux':219 'long':187 'longer':51 'look':130,183,291 'lot':48 'louvr':301 'made':165 'make':40,117,134,148 'manag':12,55,73,124,201,231,296 'mani':1 'map':209 'mate':94 'might':133 'multipl':21,112 'need':289 'oasi':218 'obvious':279 'one':110,147,206 'peopl':2 'plan':100 'practic':247 'predict':4 'project':26,299 'read':215 'rich':273 'run':188 'seem':96 'select':204 'separ':190,265 'size':286 'small':9 'smaller':270 'smart':184 'swc':227,274 'take':35 'taken':144 'thing':166 'think':46,171 'tile':229 'time':22 'trim':255 'turn':76 'velox':232 'wayland':17,99,126,179,192,225 'weight':252 'window':11,54,72,123,200,230,295 'would':31,244 'wrong':80 'x':141 'xfce':91 'xorg':257 'xwayland':276 'yesterday':220"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://programming.dev/comment/4837543"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700027677 {#4094
      date: 2023-11-15 06:54:37.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4083}
  +body: "People using X window manage will just keep using them. Wayland doesn’t offer anything valuable to most users so people will just keep using the managers they like. In 10-20 years we will get some nice, new managers that naturally will support Wayland and people will switch because of the features, not because ‘X insecure, Wayland awesome’ BS."
  +lang: "en"
  +isAdult: false
  +favouriteCount: 0
  +score: 0
  +lastActive: DateTime @1700062678 {#4922
    date: 2023-11-15 16:37:58.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@LeFantome@programming.dev"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4926 …}
  +nested: Doctrine\ORM\PersistentCollection {#4928 …}
  +votes: Doctrine\ORM\PersistentCollection {#4930 …}
  +reports: Doctrine\ORM\PersistentCollection {#4932 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4934 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4936 …}
  -id: 191165
  -bodyTs: "'-20':32 '10':31 'anyth':15 'awesom':59 'bs':60 'doesn':12 'featur':53 'get':36 'insecur':57 'keep':8,24 'like':29 'manag':5,27,40 'natur':42 'new':39 'nice':38 'offer':14 'peopl':1,21,47 'support':44 'switch':49 'use':2,9,25 'user':19 'valuabl':16 'wayland':11,45,58 'window':4 'x':3,56 'year':33"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://linux.community/comment/954496"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700062678 {#4923
    date: 2023-11-15 16:37:58.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
20 DENIED moderate
App\Entity\EntryComment {#4924
  +user: Proxies\__CG__\App\Entity\User {#4925 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4083
    +user: App\Entity\User {#4072 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: """
      Many people have predicted the death of the small, independent window manager with the coming of Wayland. I have heard multiple times that only large projects like GNOME and KDE would be able to take on the burden of making a compositor.\n
      \n
      Now, I do think that lots of no longer actively developed window managers could get left behind. But the idea that it will be too complicated to create a window manager now is turning out to be wrong.\n
      \n
      First, fewer desktop environments are getting left behind than feared. XFCE, Cinnamon, and MATE all seem to have Wayland plans now.\n
      \n
      The big change is the appearance of not one but multiple compositor libraries designed to make it easier to create a window manager for Wayland. Some of them look like they might make it easier than it was under X. The approach taken by this one makes the idea of hacking around with it very inviting.\n
      \n
      Although having to create a compositor has made things difficultly until now, I think the idea of decoupling the compositor for Wayland is going to look smart in the long run.\n
      \n
      Being separate from Wayland, compositor devs are free to experiment and window manager authors can select the one that best maps to their goals.\n
      \n
      I was reading up on Oasis Linux yesterday. It comes with a Wayland compositor ( SWC ) and tiling window manager ( Velox ) that are less than 20,000 lines of code combined!\n
      \n
      It would not be practical for a light-weight distro to trim down Xorg like that. But I the compositor is separate, it can be either smaller or feature rich. SWC is XWayland compatible but obviously that is going to add more size if you need it.\n
      \n
      Looking forward to the window manager innovation that projects like Louvre enable.
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 16
    +score: 0
    +lastActive: DateTime @1706009502 {#4089
      date: 2024-01-23 12:31:42.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4088 …}
    +nested: Doctrine\ORM\PersistentCollection {#4087 …}
    +votes: Doctrine\ORM\PersistentCollection {#4078 …}
    +reports: Doctrine\ORM\PersistentCollection {#4081 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4076 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4074 …}
    -id: 126228
    -bodyTs: "'000':238 '20':237 'abl':33 'activ':52 'add':284 'although':158 'appear':107 'approach':143 'around':153 'author':202 'behind':59,88 'best':208 'big':103 'burden':38 'chang':104 'cinnamon':92 'code':241 'combin':242 'come':15,222 'compat':277 'complic':68 'compositor':42,113,163,177,193,226,263 'could':56 'creat':70,121,161 'death':6 'decoupl':175 'design':115 'desktop':83 'dev':194 'develop':53 'difficult':167 'distro':253 'easier':119,136 'either':269 'enabl':302 'environ':84 'experi':198 'fear':90 'featur':272 'fewer':82 'first':81 'forward':292 'free':196 'get':57,86 'gnome':28 'go':181,282 'goal':212 'hack':152 'heard':20 'idea':62,150,173 'independ':10 'innov':297 'invit':157 'kde':30 'larg':25 'left':58,87 'less':235 'librari':114 'light':251 'light-weight':250 'like':27,131,258,300 'line':239 'linux':219 'long':187 'longer':51 'look':130,183,291 'lot':48 'louvr':301 'made':165 'make':40,117,134,148 'manag':12,55,73,124,201,231,296 'mani':1 'map':209 'mate':94 'might':133 'multipl':21,112 'need':289 'oasi':218 'obvious':279 'one':110,147,206 'peopl':2 'plan':100 'practic':247 'predict':4 'project':26,299 'read':215 'rich':273 'run':188 'seem':96 'select':204 'separ':190,265 'size':286 'small':9 'smaller':270 'smart':184 'swc':227,274 'take':35 'taken':144 'thing':166 'think':46,171 'tile':229 'time':22 'trim':255 'turn':76 'velox':232 'wayland':17,99,126,179,192,225 'weight':252 'window':11,54,72,123,200,230,295 'would':31,244 'wrong':80 'x':141 'xfce':91 'xorg':257 'xwayland':276 'yesterday':220"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://programming.dev/comment/4837543"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700027677 {#4094
      date: 2023-11-15 06:54:37.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4083}
  +body: "People using X window manage will just keep using them. Wayland doesn’t offer anything valuable to most users so people will just keep using the managers they like. In 10-20 years we will get some nice, new managers that naturally will support Wayland and people will switch because of the features, not because ‘X insecure, Wayland awesome’ BS."
  +lang: "en"
  +isAdult: false
  +favouriteCount: 0
  +score: 0
  +lastActive: DateTime @1700062678 {#4922
    date: 2023-11-15 16:37:58.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@LeFantome@programming.dev"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4926 …}
  +nested: Doctrine\ORM\PersistentCollection {#4928 …}
  +votes: Doctrine\ORM\PersistentCollection {#4930 …}
  +reports: Doctrine\ORM\PersistentCollection {#4932 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4934 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4936 …}
  -id: 191165
  -bodyTs: "'-20':32 '10':31 'anyth':15 'awesom':59 'bs':60 'doesn':12 'featur':53 'get':36 'insecur':57 'keep':8,24 'like':29 'manag':5,27,40 'natur':42 'new':39 'nice':38 'offer':14 'peopl':1,21,47 'support':44 'switch':49 'use':2,9,25 'user':19 'valuabl':16 'wayland':11,45,58 'window':4 'x':3,56 'year':33"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://linux.community/comment/954496"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700062678 {#4923
    date: 2023-11-15 16:37:58.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
21 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
22 DENIED moderate
App\Entity\EntryComment {#5039
  +user: Proxies\__CG__\App\Entity\User {#5040 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4924
    +user: Proxies\__CG__\App\Entity\User {#4925 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#4083
      +user: App\Entity\User {#4072 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: null
      +root: null
      +body: """
        Many people have predicted the death of the small, independent window manager with the coming of Wayland. I have heard multiple times that only large projects like GNOME and KDE would be able to take on the burden of making a compositor.\n
        \n
        Now, I do think that lots of no longer actively developed window managers could get left behind. But the idea that it will be too complicated to create a window manager now is turning out to be wrong.\n
        \n
        First, fewer desktop environments are getting left behind than feared. XFCE, Cinnamon, and MATE all seem to have Wayland plans now.\n
        \n
        The big change is the appearance of not one but multiple compositor libraries designed to make it easier to create a window manager for Wayland. Some of them look like they might make it easier than it was under X. The approach taken by this one makes the idea of hacking around with it very inviting.\n
        \n
        Although having to create a compositor has made things difficultly until now, I think the idea of decoupling the compositor for Wayland is going to look smart in the long run.\n
        \n
        Being separate from Wayland, compositor devs are free to experiment and window manager authors can select the one that best maps to their goals.\n
        \n
        I was reading up on Oasis Linux yesterday. It comes with a Wayland compositor ( SWC ) and tiling window manager ( Velox ) that are less than 20,000 lines of code combined!\n
        \n
        It would not be practical for a light-weight distro to trim down Xorg like that. But I the compositor is separate, it can be either smaller or feature rich. SWC is XWayland compatible but obviously that is going to add more size if you need it.\n
        \n
        Looking forward to the window manager innovation that projects like Louvre enable.
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 16
      +score: 0
      +lastActive: DateTime @1706009502 {#4089
        date: 2024-01-23 12:31:42.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4088 …}
      +nested: Doctrine\ORM\PersistentCollection {#4087 …}
      +votes: Doctrine\ORM\PersistentCollection {#4078 …}
      +reports: Doctrine\ORM\PersistentCollection {#4081 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4076 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4074 …}
      -id: 126228
      -bodyTs: "'000':238 '20':237 'abl':33 'activ':52 'add':284 'although':158 'appear':107 'approach':143 'around':153 'author':202 'behind':59,88 'best':208 'big':103 'burden':38 'chang':104 'cinnamon':92 'code':241 'combin':242 'come':15,222 'compat':277 'complic':68 'compositor':42,113,163,177,193,226,263 'could':56 'creat':70,121,161 'death':6 'decoupl':175 'design':115 'desktop':83 'dev':194 'develop':53 'difficult':167 'distro':253 'easier':119,136 'either':269 'enabl':302 'environ':84 'experi':198 'fear':90 'featur':272 'fewer':82 'first':81 'forward':292 'free':196 'get':57,86 'gnome':28 'go':181,282 'goal':212 'hack':152 'heard':20 'idea':62,150,173 'independ':10 'innov':297 'invit':157 'kde':30 'larg':25 'left':58,87 'less':235 'librari':114 'light':251 'light-weight':250 'like':27,131,258,300 'line':239 'linux':219 'long':187 'longer':51 'look':130,183,291 'lot':48 'louvr':301 'made':165 'make':40,117,134,148 'manag':12,55,73,124,201,231,296 'mani':1 'map':209 'mate':94 'might':133 'multipl':21,112 'need':289 'oasi':218 'obvious':279 'one':110,147,206 'peopl':2 'plan':100 'practic':247 'predict':4 'project':26,299 'read':215 'rich':273 'run':188 'seem':96 'select':204 'separ':190,265 'size':286 'small':9 'smaller':270 'smart':184 'swc':227,274 'take':35 'taken':144 'thing':166 'think':46,171 'tile':229 'time':22 'trim':255 'turn':76 'velox':232 'wayland':17,99,126,179,192,225 'weight':252 'window':11,54,72,123,200,230,295 'would':31,244 'wrong':80 'x':141 'xfce':91 'xorg':257 'xwayland':276 'yesterday':220"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://programming.dev/comment/4837543"
      +editedAt: null
      +createdAt: DateTimeImmutable @1700027677 {#4094
        date: 2023-11-15 06:54:37.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4083}
    +body: "People using X window manage will just keep using them. Wayland doesn’t offer anything valuable to most users so people will just keep using the managers they like. In 10-20 years we will get some nice, new managers that naturally will support Wayland and people will switch because of the features, not because ‘X insecure, Wayland awesome’ BS."
    +lang: "en"
    +isAdult: false
    +favouriteCount: 0
    +score: 0
    +lastActive: DateTime @1700062678 {#4922
      date: 2023-11-15 16:37:58.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@LeFantome@programming.dev"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4926 …}
    +nested: Doctrine\ORM\PersistentCollection {#4928 …}
    +votes: Doctrine\ORM\PersistentCollection {#4930 …}
    +reports: Doctrine\ORM\PersistentCollection {#4932 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4934 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4936 …}
    -id: 191165
    -bodyTs: "'-20':32 '10':31 'anyth':15 'awesom':59 'bs':60 'doesn':12 'featur':53 'get':36 'insecur':57 'keep':8,24 'like':29 'manag':5,27,40 'natur':42 'new':39 'nice':38 'offer':14 'peopl':1,21,47 'support':44 'switch':49 'use':2,9,25 'user':19 'valuabl':16 'wayland':11,45,58 'window':4 'x':3,56 'year':33"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://linux.community/comment/954496"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700062678 {#4923
      date: 2023-11-15 16:37:58.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4083}
  +body: """
    Wayland is already a lot nicer to use over X. Better gestures, better animations, better performance, and that’s if you use Wayland today, not in a year’s time.\n
    \n
    Like I get why people are defensive over X but it literally isn’t being developed anymore - And if it’s really worth keeping over Wayland the time to get contributors to support it is passing quickly.
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 0
  +score: 0
  +lastActive: DateTime @1700249697 {#5037
    date: 2023-11-17 20:34:57.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@LeFantome@programming.dev"
    "@ExLisper@linux.community"
  ]
  +children: Doctrine\ORM\PersistentCollection {#5041 …}
  +nested: Doctrine\ORM\PersistentCollection {#5043 …}
  +votes: Doctrine\ORM\PersistentCollection {#5045 …}
  +reports: Doctrine\ORM\PersistentCollection {#5047 …}
  +favourites: Doctrine\ORM\PersistentCollection {#5049 …}
  +notifications: Doctrine\ORM\PersistentCollection {#5051 …}
  -id: 227775
  -bodyTs: "'alreadi':3 'anim':14 'anymor':47 'better':11,13,15 'contributor':61 'defens':37 'develop':46 'gestur':12 'get':33,60 'isn':43 'keep':54 'like':31 'liter':42 'lot':5 'nicer':6 'pass':66 'peopl':35 'perform':16 'quick':67 'realli':52 'support':63 'time':30,58 'today':24 'use':8,22 'wayland':1,23,56 'worth':53 'x':10,39 'year':28"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5389521"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700249697 {#5038
    date: 2023-11-17 20:34:57.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
23 DENIED edit
App\Entity\EntryComment {#5039
  +user: Proxies\__CG__\App\Entity\User {#5040 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4924
    +user: Proxies\__CG__\App\Entity\User {#4925 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#4083
      +user: App\Entity\User {#4072 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: null
      +root: null
      +body: """
        Many people have predicted the death of the small, independent window manager with the coming of Wayland. I have heard multiple times that only large projects like GNOME and KDE would be able to take on the burden of making a compositor.\n
        \n
        Now, I do think that lots of no longer actively developed window managers could get left behind. But the idea that it will be too complicated to create a window manager now is turning out to be wrong.\n
        \n
        First, fewer desktop environments are getting left behind than feared. XFCE, Cinnamon, and MATE all seem to have Wayland plans now.\n
        \n
        The big change is the appearance of not one but multiple compositor libraries designed to make it easier to create a window manager for Wayland. Some of them look like they might make it easier than it was under X. The approach taken by this one makes the idea of hacking around with it very inviting.\n
        \n
        Although having to create a compositor has made things difficultly until now, I think the idea of decoupling the compositor for Wayland is going to look smart in the long run.\n
        \n
        Being separate from Wayland, compositor devs are free to experiment and window manager authors can select the one that best maps to their goals.\n
        \n
        I was reading up on Oasis Linux yesterday. It comes with a Wayland compositor ( SWC ) and tiling window manager ( Velox ) that are less than 20,000 lines of code combined!\n
        \n
        It would not be practical for a light-weight distro to trim down Xorg like that. But I the compositor is separate, it can be either smaller or feature rich. SWC is XWayland compatible but obviously that is going to add more size if you need it.\n
        \n
        Looking forward to the window manager innovation that projects like Louvre enable.
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 16
      +score: 0
      +lastActive: DateTime @1706009502 {#4089
        date: 2024-01-23 12:31:42.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4088 …}
      +nested: Doctrine\ORM\PersistentCollection {#4087 …}
      +votes: Doctrine\ORM\PersistentCollection {#4078 …}
      +reports: Doctrine\ORM\PersistentCollection {#4081 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4076 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4074 …}
      -id: 126228
      -bodyTs: "'000':238 '20':237 'abl':33 'activ':52 'add':284 'although':158 'appear':107 'approach':143 'around':153 'author':202 'behind':59,88 'best':208 'big':103 'burden':38 'chang':104 'cinnamon':92 'code':241 'combin':242 'come':15,222 'compat':277 'complic':68 'compositor':42,113,163,177,193,226,263 'could':56 'creat':70,121,161 'death':6 'decoupl':175 'design':115 'desktop':83 'dev':194 'develop':53 'difficult':167 'distro':253 'easier':119,136 'either':269 'enabl':302 'environ':84 'experi':198 'fear':90 'featur':272 'fewer':82 'first':81 'forward':292 'free':196 'get':57,86 'gnome':28 'go':181,282 'goal':212 'hack':152 'heard':20 'idea':62,150,173 'independ':10 'innov':297 'invit':157 'kde':30 'larg':25 'left':58,87 'less':235 'librari':114 'light':251 'light-weight':250 'like':27,131,258,300 'line':239 'linux':219 'long':187 'longer':51 'look':130,183,291 'lot':48 'louvr':301 'made':165 'make':40,117,134,148 'manag':12,55,73,124,201,231,296 'mani':1 'map':209 'mate':94 'might':133 'multipl':21,112 'need':289 'oasi':218 'obvious':279 'one':110,147,206 'peopl':2 'plan':100 'practic':247 'predict':4 'project':26,299 'read':215 'rich':273 'run':188 'seem':96 'select':204 'separ':190,265 'size':286 'small':9 'smaller':270 'smart':184 'swc':227,274 'take':35 'taken':144 'thing':166 'think':46,171 'tile':229 'time':22 'trim':255 'turn':76 'velox':232 'wayland':17,99,126,179,192,225 'weight':252 'window':11,54,72,123,200,230,295 'would':31,244 'wrong':80 'x':141 'xfce':91 'xorg':257 'xwayland':276 'yesterday':220"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://programming.dev/comment/4837543"
      +editedAt: null
      +createdAt: DateTimeImmutable @1700027677 {#4094
        date: 2023-11-15 06:54:37.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4083}
    +body: "People using X window manage will just keep using them. Wayland doesn’t offer anything valuable to most users so people will just keep using the managers they like. In 10-20 years we will get some nice, new managers that naturally will support Wayland and people will switch because of the features, not because ‘X insecure, Wayland awesome’ BS."
    +lang: "en"
    +isAdult: false
    +favouriteCount: 0
    +score: 0
    +lastActive: DateTime @1700062678 {#4922
      date: 2023-11-15 16:37:58.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@LeFantome@programming.dev"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4926 …}
    +nested: Doctrine\ORM\PersistentCollection {#4928 …}
    +votes: Doctrine\ORM\PersistentCollection {#4930 …}
    +reports: Doctrine\ORM\PersistentCollection {#4932 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4934 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4936 …}
    -id: 191165
    -bodyTs: "'-20':32 '10':31 'anyth':15 'awesom':59 'bs':60 'doesn':12 'featur':53 'get':36 'insecur':57 'keep':8,24 'like':29 'manag':5,27,40 'natur':42 'new':39 'nice':38 'offer':14 'peopl':1,21,47 'support':44 'switch':49 'use':2,9,25 'user':19 'valuabl':16 'wayland':11,45,58 'window':4 'x':3,56 'year':33"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://linux.community/comment/954496"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700062678 {#4923
      date: 2023-11-15 16:37:58.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4083}
  +body: """
    Wayland is already a lot nicer to use over X. Better gestures, better animations, better performance, and that’s if you use Wayland today, not in a year’s time.\n
    \n
    Like I get why people are defensive over X but it literally isn’t being developed anymore - And if it’s really worth keeping over Wayland the time to get contributors to support it is passing quickly.
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 0
  +score: 0
  +lastActive: DateTime @1700249697 {#5037
    date: 2023-11-17 20:34:57.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@LeFantome@programming.dev"
    "@ExLisper@linux.community"
  ]
  +children: Doctrine\ORM\PersistentCollection {#5041 …}
  +nested: Doctrine\ORM\PersistentCollection {#5043 …}
  +votes: Doctrine\ORM\PersistentCollection {#5045 …}
  +reports: Doctrine\ORM\PersistentCollection {#5047 …}
  +favourites: Doctrine\ORM\PersistentCollection {#5049 …}
  +notifications: Doctrine\ORM\PersistentCollection {#5051 …}
  -id: 227775
  -bodyTs: "'alreadi':3 'anim':14 'anymor':47 'better':11,13,15 'contributor':61 'defens':37 'develop':46 'gestur':12 'get':33,60 'isn':43 'keep':54 'like':31 'liter':42 'lot':5 'nicer':6 'pass':66 'peopl':35 'perform':16 'quick':67 'realli':52 'support':63 'time':30,58 'today':24 'use':8,22 'wayland':1,23,56 'worth':53 'x':10,39 'year':28"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5389521"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700249697 {#5038
    date: 2023-11-17 20:34:57.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
24 DENIED moderate
App\Entity\EntryComment {#5039
  +user: Proxies\__CG__\App\Entity\User {#5040 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4924
    +user: Proxies\__CG__\App\Entity\User {#4925 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#4083
      +user: App\Entity\User {#4072 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: null
      +root: null
      +body: """
        Many people have predicted the death of the small, independent window manager with the coming of Wayland. I have heard multiple times that only large projects like GNOME and KDE would be able to take on the burden of making a compositor.\n
        \n
        Now, I do think that lots of no longer actively developed window managers could get left behind. But the idea that it will be too complicated to create a window manager now is turning out to be wrong.\n
        \n
        First, fewer desktop environments are getting left behind than feared. XFCE, Cinnamon, and MATE all seem to have Wayland plans now.\n
        \n
        The big change is the appearance of not one but multiple compositor libraries designed to make it easier to create a window manager for Wayland. Some of them look like they might make it easier than it was under X. The approach taken by this one makes the idea of hacking around with it very inviting.\n
        \n
        Although having to create a compositor has made things difficultly until now, I think the idea of decoupling the compositor for Wayland is going to look smart in the long run.\n
        \n
        Being separate from Wayland, compositor devs are free to experiment and window manager authors can select the one that best maps to their goals.\n
        \n
        I was reading up on Oasis Linux yesterday. It comes with a Wayland compositor ( SWC ) and tiling window manager ( Velox ) that are less than 20,000 lines of code combined!\n
        \n
        It would not be practical for a light-weight distro to trim down Xorg like that. But I the compositor is separate, it can be either smaller or feature rich. SWC is XWayland compatible but obviously that is going to add more size if you need it.\n
        \n
        Looking forward to the window manager innovation that projects like Louvre enable.
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 16
      +score: 0
      +lastActive: DateTime @1706009502 {#4089
        date: 2024-01-23 12:31:42.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4088 …}
      +nested: Doctrine\ORM\PersistentCollection {#4087 …}
      +votes: Doctrine\ORM\PersistentCollection {#4078 …}
      +reports: Doctrine\ORM\PersistentCollection {#4081 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4076 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4074 …}
      -id: 126228
      -bodyTs: "'000':238 '20':237 'abl':33 'activ':52 'add':284 'although':158 'appear':107 'approach':143 'around':153 'author':202 'behind':59,88 'best':208 'big':103 'burden':38 'chang':104 'cinnamon':92 'code':241 'combin':242 'come':15,222 'compat':277 'complic':68 'compositor':42,113,163,177,193,226,263 'could':56 'creat':70,121,161 'death':6 'decoupl':175 'design':115 'desktop':83 'dev':194 'develop':53 'difficult':167 'distro':253 'easier':119,136 'either':269 'enabl':302 'environ':84 'experi':198 'fear':90 'featur':272 'fewer':82 'first':81 'forward':292 'free':196 'get':57,86 'gnome':28 'go':181,282 'goal':212 'hack':152 'heard':20 'idea':62,150,173 'independ':10 'innov':297 'invit':157 'kde':30 'larg':25 'left':58,87 'less':235 'librari':114 'light':251 'light-weight':250 'like':27,131,258,300 'line':239 'linux':219 'long':187 'longer':51 'look':130,183,291 'lot':48 'louvr':301 'made':165 'make':40,117,134,148 'manag':12,55,73,124,201,231,296 'mani':1 'map':209 'mate':94 'might':133 'multipl':21,112 'need':289 'oasi':218 'obvious':279 'one':110,147,206 'peopl':2 'plan':100 'practic':247 'predict':4 'project':26,299 'read':215 'rich':273 'run':188 'seem':96 'select':204 'separ':190,265 'size':286 'small':9 'smaller':270 'smart':184 'swc':227,274 'take':35 'taken':144 'thing':166 'think':46,171 'tile':229 'time':22 'trim':255 'turn':76 'velox':232 'wayland':17,99,126,179,192,225 'weight':252 'window':11,54,72,123,200,230,295 'would':31,244 'wrong':80 'x':141 'xfce':91 'xorg':257 'xwayland':276 'yesterday':220"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://programming.dev/comment/4837543"
      +editedAt: null
      +createdAt: DateTimeImmutable @1700027677 {#4094
        date: 2023-11-15 06:54:37.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4083}
    +body: "People using X window manage will just keep using them. Wayland doesn’t offer anything valuable to most users so people will just keep using the managers they like. In 10-20 years we will get some nice, new managers that naturally will support Wayland and people will switch because of the features, not because ‘X insecure, Wayland awesome’ BS."
    +lang: "en"
    +isAdult: false
    +favouriteCount: 0
    +score: 0
    +lastActive: DateTime @1700062678 {#4922
      date: 2023-11-15 16:37:58.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@LeFantome@programming.dev"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4926 …}
    +nested: Doctrine\ORM\PersistentCollection {#4928 …}
    +votes: Doctrine\ORM\PersistentCollection {#4930 …}
    +reports: Doctrine\ORM\PersistentCollection {#4932 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4934 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4936 …}
    -id: 191165
    -bodyTs: "'-20':32 '10':31 'anyth':15 'awesom':59 'bs':60 'doesn':12 'featur':53 'get':36 'insecur':57 'keep':8,24 'like':29 'manag':5,27,40 'natur':42 'new':39 'nice':38 'offer':14 'peopl':1,21,47 'support':44 'switch':49 'use':2,9,25 'user':19 'valuabl':16 'wayland':11,45,58 'window':4 'x':3,56 'year':33"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://linux.community/comment/954496"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700062678 {#4923
      date: 2023-11-15 16:37:58.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4083}
  +body: """
    Wayland is already a lot nicer to use over X. Better gestures, better animations, better performance, and that’s if you use Wayland today, not in a year’s time.\n
    \n
    Like I get why people are defensive over X but it literally isn’t being developed anymore - And if it’s really worth keeping over Wayland the time to get contributors to support it is passing quickly.
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 0
  +score: 0
  +lastActive: DateTime @1700249697 {#5037
    date: 2023-11-17 20:34:57.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@LeFantome@programming.dev"
    "@ExLisper@linux.community"
  ]
  +children: Doctrine\ORM\PersistentCollection {#5041 …}
  +nested: Doctrine\ORM\PersistentCollection {#5043 …}
  +votes: Doctrine\ORM\PersistentCollection {#5045 …}
  +reports: Doctrine\ORM\PersistentCollection {#5047 …}
  +favourites: Doctrine\ORM\PersistentCollection {#5049 …}
  +notifications: Doctrine\ORM\PersistentCollection {#5051 …}
  -id: 227775
  -bodyTs: "'alreadi':3 'anim':14 'anymor':47 'better':11,13,15 'contributor':61 'defens':37 'develop':46 'gestur':12 'get':33,60 'isn':43 'keep':54 'like':31 'liter':42 'lot':5 'nicer':6 'pass':66 'peopl':35 'perform':16 'quick':67 'realli':52 'support':63 'time':30,58 'today':24 'use':8,22 'wayland':1,23,56 'worth':53 'x':10,39 'year':28"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5389521"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700249697 {#5038
    date: 2023-11-17 20:34:57.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
25 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
26 DENIED moderate
App\Entity\EntryComment {#5055
  +user: App\Entity\User {#4072 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4924
    +user: Proxies\__CG__\App\Entity\User {#4925 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#4083
      +user: App\Entity\User {#4072 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: null
      +root: null
      +body: """
        Many people have predicted the death of the small, independent window manager with the coming of Wayland. I have heard multiple times that only large projects like GNOME and KDE would be able to take on the burden of making a compositor.\n
        \n
        Now, I do think that lots of no longer actively developed window managers could get left behind. But the idea that it will be too complicated to create a window manager now is turning out to be wrong.\n
        \n
        First, fewer desktop environments are getting left behind than feared. XFCE, Cinnamon, and MATE all seem to have Wayland plans now.\n
        \n
        The big change is the appearance of not one but multiple compositor libraries designed to make it easier to create a window manager for Wayland. Some of them look like they might make it easier than it was under X. The approach taken by this one makes the idea of hacking around with it very inviting.\n
        \n
        Although having to create a compositor has made things difficultly until now, I think the idea of decoupling the compositor for Wayland is going to look smart in the long run.\n
        \n
        Being separate from Wayland, compositor devs are free to experiment and window manager authors can select the one that best maps to their goals.\n
        \n
        I was reading up on Oasis Linux yesterday. It comes with a Wayland compositor ( SWC ) and tiling window manager ( Velox ) that are less than 20,000 lines of code combined!\n
        \n
        It would not be practical for a light-weight distro to trim down Xorg like that. But I the compositor is separate, it can be either smaller or feature rich. SWC is XWayland compatible but obviously that is going to add more size if you need it.\n
        \n
        Looking forward to the window manager innovation that projects like Louvre enable.
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 16
      +score: 0
      +lastActive: DateTime @1706009502 {#4089
        date: 2024-01-23 12:31:42.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4088 …}
      +nested: Doctrine\ORM\PersistentCollection {#4087 …}
      +votes: Doctrine\ORM\PersistentCollection {#4078 …}
      +reports: Doctrine\ORM\PersistentCollection {#4081 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4076 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4074 …}
      -id: 126228
      -bodyTs: "'000':238 '20':237 'abl':33 'activ':52 'add':284 'although':158 'appear':107 'approach':143 'around':153 'author':202 'behind':59,88 'best':208 'big':103 'burden':38 'chang':104 'cinnamon':92 'code':241 'combin':242 'come':15,222 'compat':277 'complic':68 'compositor':42,113,163,177,193,226,263 'could':56 'creat':70,121,161 'death':6 'decoupl':175 'design':115 'desktop':83 'dev':194 'develop':53 'difficult':167 'distro':253 'easier':119,136 'either':269 'enabl':302 'environ':84 'experi':198 'fear':90 'featur':272 'fewer':82 'first':81 'forward':292 'free':196 'get':57,86 'gnome':28 'go':181,282 'goal':212 'hack':152 'heard':20 'idea':62,150,173 'independ':10 'innov':297 'invit':157 'kde':30 'larg':25 'left':58,87 'less':235 'librari':114 'light':251 'light-weight':250 'like':27,131,258,300 'line':239 'linux':219 'long':187 'longer':51 'look':130,183,291 'lot':48 'louvr':301 'made':165 'make':40,117,134,148 'manag':12,55,73,124,201,231,296 'mani':1 'map':209 'mate':94 'might':133 'multipl':21,112 'need':289 'oasi':218 'obvious':279 'one':110,147,206 'peopl':2 'plan':100 'practic':247 'predict':4 'project':26,299 'read':215 'rich':273 'run':188 'seem':96 'select':204 'separ':190,265 'size':286 'small':9 'smaller':270 'smart':184 'swc':227,274 'take':35 'taken':144 'thing':166 'think':46,171 'tile':229 'time':22 'trim':255 'turn':76 'velox':232 'wayland':17,99,126,179,192,225 'weight':252 'window':11,54,72,123,200,230,295 'would':31,244 'wrong':80 'x':141 'xfce':91 'xorg':257 'xwayland':276 'yesterday':220"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://programming.dev/comment/4837543"
      +editedAt: null
      +createdAt: DateTimeImmutable @1700027677 {#4094
        date: 2023-11-15 06:54:37.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4083}
    +body: "People using X window manage will just keep using them. Wayland doesn’t offer anything valuable to most users so people will just keep using the managers they like. In 10-20 years we will get some nice, new managers that naturally will support Wayland and people will switch because of the features, not because ‘X insecure, Wayland awesome’ BS."
    +lang: "en"
    +isAdult: false
    +favouriteCount: 0
    +score: 0
    +lastActive: DateTime @1700062678 {#4922
      date: 2023-11-15 16:37:58.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@LeFantome@programming.dev"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4926 …}
    +nested: Doctrine\ORM\PersistentCollection {#4928 …}
    +votes: Doctrine\ORM\PersistentCollection {#4930 …}
    +reports: Doctrine\ORM\PersistentCollection {#4932 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4934 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4936 …}
    -id: 191165
    -bodyTs: "'-20':32 '10':31 'anyth':15 'awesom':59 'bs':60 'doesn':12 'featur':53 'get':36 'insecur':57 'keep':8,24 'like':29 'manag':5,27,40 'natur':42 'new':39 'nice':38 'offer':14 'peopl':1,21,47 'support':44 'switch':49 'use':2,9,25 'user':19 'valuabl':16 'wayland':11,45,58 'window':4 'x':3,56 'year':33"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://linux.community/comment/954496"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700062678 {#4923
      date: 2023-11-15 16:37:58.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4083}
  +body: """
    I agree with your overall sentiment with the caveat that 20 years will be closer to 5. Early adopters are enjoying Wayland only benefits today. For example, the Steam Deck just launched with HDR and mainline support for Linux gamers in general will not be far behind.\n
    \n
    Also, the list of window managers being left behind is starting to look less appealing than the list of window managers that are Wayland only. Hyperland is probably already more popular than WindowMkaer. As GNOME and KDE go Wayland only, they will continue to add features that regular users will want. I see more announcements for new Wayland compositors than I do for new X window managers.\n
    \n
    Another factor that gets missed is that the main dev support for X comes from Red Hat. RHEL9 is already Wayland based. When RHEL8 comes off support in 5 years, Red Hat will abandon X. How long will X stay viable after that?\n
    \n
    As the number of X users dwindle, we will see toolkits drop support for X. GTK5 for example. 5 years may be too soon for that but I cannot see it taking 20 years.\n
    \n
    Wayland being “valuable to most users” will come faster than you think.
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 0
  +score: 0
  +lastActive: DateTime @1700324159 {#5053
    date: 2023-11-18 17:15:59.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@LeFantome@programming.dev"
    "@ExLisper@linux.community"
  ]
  +children: Doctrine\ORM\PersistentCollection {#5056 …}
  +nested: Doctrine\ORM\PersistentCollection {#5058 …}
  +votes: Doctrine\ORM\PersistentCollection {#5060 …}
  +reports: Doctrine\ORM\PersistentCollection {#5062 …}
  +favourites: Doctrine\ORM\PersistentCollection {#5064 …}
  +notifications: Doctrine\ORM\PersistentCollection {#5066 …}
  -id: 239384
  -bodyTs: "'20':11,190 '5':17,143,176 'abandon':148 'add':92 'adopt':19 'agre':2 'alreadi':76,134 'also':48 'announc':102 'anoth':115 'appeal':62 'base':136 'behind':47,56 'benefit':24 'cannot':186 'caveat':9 'closer':15 'come':128,139,199 'compositor':106 'continu':90 'deck':30 'dev':124 'drop':169 'dwindl':164 'earli':18 'enjoy':21 'exampl':27,175 'factor':116 'far':46 'faster':200 'featur':93 'gamer':40 'general':42 'get':118 'gnome':82 'go':85 'gtk5':173 'hat':131,146 'hdr':34 'hyperland':73 'kde':84 'launch':32 'left':55 'less':61 'linux':39 'list':50,65 'long':151 'look':60 'main':123 'mainlin':36 'manag':53,68,114 'may':178 'miss':119 'new':104,111 'number':160 'overal':5 'popular':78 'probabl':75 'red':130,145 'regular':95 'rhel8':138 'rhel9':132 'see':100,167,187 'sentiment':6 'soon':181 'start':58 'stay':154 'steam':29 'support':37,125,141,170 'take':189 'think':203 'today':25 'toolkit':168 'user':96,163,197 'valuabl':194 'viabl':155 'want':98 'wayland':22,71,86,105,135,192 'window':52,67,113 'windowmka':80 'x':112,127,149,153,162,172 'year':12,144,177,191"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://programming.dev/comment/4941982"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700324159 {#5054
    date: 2023-11-18 17:15:59.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
27 DENIED edit
App\Entity\EntryComment {#5055
  +user: App\Entity\User {#4072 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4924
    +user: Proxies\__CG__\App\Entity\User {#4925 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#4083
      +user: App\Entity\User {#4072 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: null
      +root: null
      +body: """
        Many people have predicted the death of the small, independent window manager with the coming of Wayland. I have heard multiple times that only large projects like GNOME and KDE would be able to take on the burden of making a compositor.\n
        \n
        Now, I do think that lots of no longer actively developed window managers could get left behind. But the idea that it will be too complicated to create a window manager now is turning out to be wrong.\n
        \n
        First, fewer desktop environments are getting left behind than feared. XFCE, Cinnamon, and MATE all seem to have Wayland plans now.\n
        \n
        The big change is the appearance of not one but multiple compositor libraries designed to make it easier to create a window manager for Wayland. Some of them look like they might make it easier than it was under X. The approach taken by this one makes the idea of hacking around with it very inviting.\n
        \n
        Although having to create a compositor has made things difficultly until now, I think the idea of decoupling the compositor for Wayland is going to look smart in the long run.\n
        \n
        Being separate from Wayland, compositor devs are free to experiment and window manager authors can select the one that best maps to their goals.\n
        \n
        I was reading up on Oasis Linux yesterday. It comes with a Wayland compositor ( SWC ) and tiling window manager ( Velox ) that are less than 20,000 lines of code combined!\n
        \n
        It would not be practical for a light-weight distro to trim down Xorg like that. But I the compositor is separate, it can be either smaller or feature rich. SWC is XWayland compatible but obviously that is going to add more size if you need it.\n
        \n
        Looking forward to the window manager innovation that projects like Louvre enable.
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 16
      +score: 0
      +lastActive: DateTime @1706009502 {#4089
        date: 2024-01-23 12:31:42.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4088 …}
      +nested: Doctrine\ORM\PersistentCollection {#4087 …}
      +votes: Doctrine\ORM\PersistentCollection {#4078 …}
      +reports: Doctrine\ORM\PersistentCollection {#4081 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4076 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4074 …}
      -id: 126228
      -bodyTs: "'000':238 '20':237 'abl':33 'activ':52 'add':284 'although':158 'appear':107 'approach':143 'around':153 'author':202 'behind':59,88 'best':208 'big':103 'burden':38 'chang':104 'cinnamon':92 'code':241 'combin':242 'come':15,222 'compat':277 'complic':68 'compositor':42,113,163,177,193,226,263 'could':56 'creat':70,121,161 'death':6 'decoupl':175 'design':115 'desktop':83 'dev':194 'develop':53 'difficult':167 'distro':253 'easier':119,136 'either':269 'enabl':302 'environ':84 'experi':198 'fear':90 'featur':272 'fewer':82 'first':81 'forward':292 'free':196 'get':57,86 'gnome':28 'go':181,282 'goal':212 'hack':152 'heard':20 'idea':62,150,173 'independ':10 'innov':297 'invit':157 'kde':30 'larg':25 'left':58,87 'less':235 'librari':114 'light':251 'light-weight':250 'like':27,131,258,300 'line':239 'linux':219 'long':187 'longer':51 'look':130,183,291 'lot':48 'louvr':301 'made':165 'make':40,117,134,148 'manag':12,55,73,124,201,231,296 'mani':1 'map':209 'mate':94 'might':133 'multipl':21,112 'need':289 'oasi':218 'obvious':279 'one':110,147,206 'peopl':2 'plan':100 'practic':247 'predict':4 'project':26,299 'read':215 'rich':273 'run':188 'seem':96 'select':204 'separ':190,265 'size':286 'small':9 'smaller':270 'smart':184 'swc':227,274 'take':35 'taken':144 'thing':166 'think':46,171 'tile':229 'time':22 'trim':255 'turn':76 'velox':232 'wayland':17,99,126,179,192,225 'weight':252 'window':11,54,72,123,200,230,295 'would':31,244 'wrong':80 'x':141 'xfce':91 'xorg':257 'xwayland':276 'yesterday':220"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://programming.dev/comment/4837543"
      +editedAt: null
      +createdAt: DateTimeImmutable @1700027677 {#4094
        date: 2023-11-15 06:54:37.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4083}
    +body: "People using X window manage will just keep using them. Wayland doesn’t offer anything valuable to most users so people will just keep using the managers they like. In 10-20 years we will get some nice, new managers that naturally will support Wayland and people will switch because of the features, not because ‘X insecure, Wayland awesome’ BS."
    +lang: "en"
    +isAdult: false
    +favouriteCount: 0
    +score: 0
    +lastActive: DateTime @1700062678 {#4922
      date: 2023-11-15 16:37:58.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@LeFantome@programming.dev"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4926 …}
    +nested: Doctrine\ORM\PersistentCollection {#4928 …}
    +votes: Doctrine\ORM\PersistentCollection {#4930 …}
    +reports: Doctrine\ORM\PersistentCollection {#4932 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4934 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4936 …}
    -id: 191165
    -bodyTs: "'-20':32 '10':31 'anyth':15 'awesom':59 'bs':60 'doesn':12 'featur':53 'get':36 'insecur':57 'keep':8,24 'like':29 'manag':5,27,40 'natur':42 'new':39 'nice':38 'offer':14 'peopl':1,21,47 'support':44 'switch':49 'use':2,9,25 'user':19 'valuabl':16 'wayland':11,45,58 'window':4 'x':3,56 'year':33"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://linux.community/comment/954496"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700062678 {#4923
      date: 2023-11-15 16:37:58.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4083}
  +body: """
    I agree with your overall sentiment with the caveat that 20 years will be closer to 5. Early adopters are enjoying Wayland only benefits today. For example, the Steam Deck just launched with HDR and mainline support for Linux gamers in general will not be far behind.\n
    \n
    Also, the list of window managers being left behind is starting to look less appealing than the list of window managers that are Wayland only. Hyperland is probably already more popular than WindowMkaer. As GNOME and KDE go Wayland only, they will continue to add features that regular users will want. I see more announcements for new Wayland compositors than I do for new X window managers.\n
    \n
    Another factor that gets missed is that the main dev support for X comes from Red Hat. RHEL9 is already Wayland based. When RHEL8 comes off support in 5 years, Red Hat will abandon X. How long will X stay viable after that?\n
    \n
    As the number of X users dwindle, we will see toolkits drop support for X. GTK5 for example. 5 years may be too soon for that but I cannot see it taking 20 years.\n
    \n
    Wayland being “valuable to most users” will come faster than you think.
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 0
  +score: 0
  +lastActive: DateTime @1700324159 {#5053
    date: 2023-11-18 17:15:59.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@LeFantome@programming.dev"
    "@ExLisper@linux.community"
  ]
  +children: Doctrine\ORM\PersistentCollection {#5056 …}
  +nested: Doctrine\ORM\PersistentCollection {#5058 …}
  +votes: Doctrine\ORM\PersistentCollection {#5060 …}
  +reports: Doctrine\ORM\PersistentCollection {#5062 …}
  +favourites: Doctrine\ORM\PersistentCollection {#5064 …}
  +notifications: Doctrine\ORM\PersistentCollection {#5066 …}
  -id: 239384
  -bodyTs: "'20':11,190 '5':17,143,176 'abandon':148 'add':92 'adopt':19 'agre':2 'alreadi':76,134 'also':48 'announc':102 'anoth':115 'appeal':62 'base':136 'behind':47,56 'benefit':24 'cannot':186 'caveat':9 'closer':15 'come':128,139,199 'compositor':106 'continu':90 'deck':30 'dev':124 'drop':169 'dwindl':164 'earli':18 'enjoy':21 'exampl':27,175 'factor':116 'far':46 'faster':200 'featur':93 'gamer':40 'general':42 'get':118 'gnome':82 'go':85 'gtk5':173 'hat':131,146 'hdr':34 'hyperland':73 'kde':84 'launch':32 'left':55 'less':61 'linux':39 'list':50,65 'long':151 'look':60 'main':123 'mainlin':36 'manag':53,68,114 'may':178 'miss':119 'new':104,111 'number':160 'overal':5 'popular':78 'probabl':75 'red':130,145 'regular':95 'rhel8':138 'rhel9':132 'see':100,167,187 'sentiment':6 'soon':181 'start':58 'stay':154 'steam':29 'support':37,125,141,170 'take':189 'think':203 'today':25 'toolkit':168 'user':96,163,197 'valuabl':194 'viabl':155 'want':98 'wayland':22,71,86,105,135,192 'window':52,67,113 'windowmka':80 'x':112,127,149,153,162,172 'year':12,144,177,191"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://programming.dev/comment/4941982"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700324159 {#5054
    date: 2023-11-18 17:15:59.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
28 DENIED moderate
App\Entity\EntryComment {#5055
  +user: App\Entity\User {#4072 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4924
    +user: Proxies\__CG__\App\Entity\User {#4925 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#4083
      +user: App\Entity\User {#4072 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: null
      +root: null
      +body: """
        Many people have predicted the death of the small, independent window manager with the coming of Wayland. I have heard multiple times that only large projects like GNOME and KDE would be able to take on the burden of making a compositor.\n
        \n
        Now, I do think that lots of no longer actively developed window managers could get left behind. But the idea that it will be too complicated to create a window manager now is turning out to be wrong.\n
        \n
        First, fewer desktop environments are getting left behind than feared. XFCE, Cinnamon, and MATE all seem to have Wayland plans now.\n
        \n
        The big change is the appearance of not one but multiple compositor libraries designed to make it easier to create a window manager for Wayland. Some of them look like they might make it easier than it was under X. The approach taken by this one makes the idea of hacking around with it very inviting.\n
        \n
        Although having to create a compositor has made things difficultly until now, I think the idea of decoupling the compositor for Wayland is going to look smart in the long run.\n
        \n
        Being separate from Wayland, compositor devs are free to experiment and window manager authors can select the one that best maps to their goals.\n
        \n
        I was reading up on Oasis Linux yesterday. It comes with a Wayland compositor ( SWC ) and tiling window manager ( Velox ) that are less than 20,000 lines of code combined!\n
        \n
        It would not be practical for a light-weight distro to trim down Xorg like that. But I the compositor is separate, it can be either smaller or feature rich. SWC is XWayland compatible but obviously that is going to add more size if you need it.\n
        \n
        Looking forward to the window manager innovation that projects like Louvre enable.
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 16
      +score: 0
      +lastActive: DateTime @1706009502 {#4089
        date: 2024-01-23 12:31:42.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4088 …}
      +nested: Doctrine\ORM\PersistentCollection {#4087 …}
      +votes: Doctrine\ORM\PersistentCollection {#4078 …}
      +reports: Doctrine\ORM\PersistentCollection {#4081 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4076 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4074 …}
      -id: 126228
      -bodyTs: "'000':238 '20':237 'abl':33 'activ':52 'add':284 'although':158 'appear':107 'approach':143 'around':153 'author':202 'behind':59,88 'best':208 'big':103 'burden':38 'chang':104 'cinnamon':92 'code':241 'combin':242 'come':15,222 'compat':277 'complic':68 'compositor':42,113,163,177,193,226,263 'could':56 'creat':70,121,161 'death':6 'decoupl':175 'design':115 'desktop':83 'dev':194 'develop':53 'difficult':167 'distro':253 'easier':119,136 'either':269 'enabl':302 'environ':84 'experi':198 'fear':90 'featur':272 'fewer':82 'first':81 'forward':292 'free':196 'get':57,86 'gnome':28 'go':181,282 'goal':212 'hack':152 'heard':20 'idea':62,150,173 'independ':10 'innov':297 'invit':157 'kde':30 'larg':25 'left':58,87 'less':235 'librari':114 'light':251 'light-weight':250 'like':27,131,258,300 'line':239 'linux':219 'long':187 'longer':51 'look':130,183,291 'lot':48 'louvr':301 'made':165 'make':40,117,134,148 'manag':12,55,73,124,201,231,296 'mani':1 'map':209 'mate':94 'might':133 'multipl':21,112 'need':289 'oasi':218 'obvious':279 'one':110,147,206 'peopl':2 'plan':100 'practic':247 'predict':4 'project':26,299 'read':215 'rich':273 'run':188 'seem':96 'select':204 'separ':190,265 'size':286 'small':9 'smaller':270 'smart':184 'swc':227,274 'take':35 'taken':144 'thing':166 'think':46,171 'tile':229 'time':22 'trim':255 'turn':76 'velox':232 'wayland':17,99,126,179,192,225 'weight':252 'window':11,54,72,123,200,230,295 'would':31,244 'wrong':80 'x':141 'xfce':91 'xorg':257 'xwayland':276 'yesterday':220"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://programming.dev/comment/4837543"
      +editedAt: null
      +createdAt: DateTimeImmutable @1700027677 {#4094
        date: 2023-11-15 06:54:37.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4083}
    +body: "People using X window manage will just keep using them. Wayland doesn’t offer anything valuable to most users so people will just keep using the managers they like. In 10-20 years we will get some nice, new managers that naturally will support Wayland and people will switch because of the features, not because ‘X insecure, Wayland awesome’ BS."
    +lang: "en"
    +isAdult: false
    +favouriteCount: 0
    +score: 0
    +lastActive: DateTime @1700062678 {#4922
      date: 2023-11-15 16:37:58.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@LeFantome@programming.dev"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4926 …}
    +nested: Doctrine\ORM\PersistentCollection {#4928 …}
    +votes: Doctrine\ORM\PersistentCollection {#4930 …}
    +reports: Doctrine\ORM\PersistentCollection {#4932 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4934 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4936 …}
    -id: 191165
    -bodyTs: "'-20':32 '10':31 'anyth':15 'awesom':59 'bs':60 'doesn':12 'featur':53 'get':36 'insecur':57 'keep':8,24 'like':29 'manag':5,27,40 'natur':42 'new':39 'nice':38 'offer':14 'peopl':1,21,47 'support':44 'switch':49 'use':2,9,25 'user':19 'valuabl':16 'wayland':11,45,58 'window':4 'x':3,56 'year':33"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://linux.community/comment/954496"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700062678 {#4923
      date: 2023-11-15 16:37:58.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4083}
  +body: """
    I agree with your overall sentiment with the caveat that 20 years will be closer to 5. Early adopters are enjoying Wayland only benefits today. For example, the Steam Deck just launched with HDR and mainline support for Linux gamers in general will not be far behind.\n
    \n
    Also, the list of window managers being left behind is starting to look less appealing than the list of window managers that are Wayland only. Hyperland is probably already more popular than WindowMkaer. As GNOME and KDE go Wayland only, they will continue to add features that regular users will want. I see more announcements for new Wayland compositors than I do for new X window managers.\n
    \n
    Another factor that gets missed is that the main dev support for X comes from Red Hat. RHEL9 is already Wayland based. When RHEL8 comes off support in 5 years, Red Hat will abandon X. How long will X stay viable after that?\n
    \n
    As the number of X users dwindle, we will see toolkits drop support for X. GTK5 for example. 5 years may be too soon for that but I cannot see it taking 20 years.\n
    \n
    Wayland being “valuable to most users” will come faster than you think.
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 0
  +score: 0
  +lastActive: DateTime @1700324159 {#5053
    date: 2023-11-18 17:15:59.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@LeFantome@programming.dev"
    "@ExLisper@linux.community"
  ]
  +children: Doctrine\ORM\PersistentCollection {#5056 …}
  +nested: Doctrine\ORM\PersistentCollection {#5058 …}
  +votes: Doctrine\ORM\PersistentCollection {#5060 …}
  +reports: Doctrine\ORM\PersistentCollection {#5062 …}
  +favourites: Doctrine\ORM\PersistentCollection {#5064 …}
  +notifications: Doctrine\ORM\PersistentCollection {#5066 …}
  -id: 239384
  -bodyTs: "'20':11,190 '5':17,143,176 'abandon':148 'add':92 'adopt':19 'agre':2 'alreadi':76,134 'also':48 'announc':102 'anoth':115 'appeal':62 'base':136 'behind':47,56 'benefit':24 'cannot':186 'caveat':9 'closer':15 'come':128,139,199 'compositor':106 'continu':90 'deck':30 'dev':124 'drop':169 'dwindl':164 'earli':18 'enjoy':21 'exampl':27,175 'factor':116 'far':46 'faster':200 'featur':93 'gamer':40 'general':42 'get':118 'gnome':82 'go':85 'gtk5':173 'hat':131,146 'hdr':34 'hyperland':73 'kde':84 'launch':32 'left':55 'less':61 'linux':39 'list':50,65 'long':151 'look':60 'main':123 'mainlin':36 'manag':53,68,114 'may':178 'miss':119 'new':104,111 'number':160 'overal':5 'popular':78 'probabl':75 'red':130,145 'regular':95 'rhel8':138 'rhel9':132 'see':100,167,187 'sentiment':6 'soon':181 'start':58 'stay':154 'steam':29 'support':37,125,141,170 'take':189 'think':203 'today':25 'toolkit':168 'user':96,163,197 'valuabl':194 'viabl':155 'want':98 'wayland':22,71,86,105,135,192 'window':52,67,113 'windowmka':80 'x':112,127,149,153,162,172 'year':12,144,177,191"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://programming.dev/comment/4941982"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700324159 {#5054
    date: 2023-11-18 17:15:59.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
29 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
30 DENIED moderate
App\Entity\EntryComment {#4169
  +user: App\Entity\User {#4182 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: null
  +root: null
  +body: "Wow, that looks stunning! I am no where near skilled enough to be able to even begin wrapping my head around making a compositor, even with a library - but I *do* know that like the other commenter mentioned we certainly need more libraries aside from the two that we currently have (but I understand why that’s a very tall order) so major props to you!"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 3
  +score: 0
  +lastActive: DateTime @1700330888 {#4163
    date: 2023-11-18 19:08:08.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4170 …}
  +nested: Doctrine\ORM\PersistentCollection {#4172 …}
  +votes: Doctrine\ORM\PersistentCollection {#4174 …}
  +reports: Doctrine\ORM\PersistentCollection {#4176 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4178 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4180 …}
  -id: 126001
  -bodyTs: "'abl':14 'around':21 'asid':44 'begin':17 'certain':40 'comment':37 'compositor':24 'current':50 'enough':11 'even':16,25 'head':20 'know':32 'librari':28,43 'like':34 'look':3 'major':63 'make':22 'mention':38 'near':9 'need':41 'order':61 'prop':64 'skill':10 'stun':4 'tall':60 'two':47 'understand':54 'wow':1 'wrap':18"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://outpost.zeuslink.net/comment/3139968"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700017917 {#4164
    date: 2023-11-15 04:11:57.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
31 DENIED edit
App\Entity\EntryComment {#4169
  +user: App\Entity\User {#4182 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: null
  +root: null
  +body: "Wow, that looks stunning! I am no where near skilled enough to be able to even begin wrapping my head around making a compositor, even with a library - but I *do* know that like the other commenter mentioned we certainly need more libraries aside from the two that we currently have (but I understand why that’s a very tall order) so major props to you!"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 3
  +score: 0
  +lastActive: DateTime @1700330888 {#4163
    date: 2023-11-18 19:08:08.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4170 …}
  +nested: Doctrine\ORM\PersistentCollection {#4172 …}
  +votes: Doctrine\ORM\PersistentCollection {#4174 …}
  +reports: Doctrine\ORM\PersistentCollection {#4176 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4178 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4180 …}
  -id: 126001
  -bodyTs: "'abl':14 'around':21 'asid':44 'begin':17 'certain':40 'comment':37 'compositor':24 'current':50 'enough':11 'even':16,25 'head':20 'know':32 'librari':28,43 'like':34 'look':3 'major':63 'make':22 'mention':38 'near':9 'need':41 'order':61 'prop':64 'skill':10 'stun':4 'tall':60 'two':47 'understand':54 'wow':1 'wrap':18"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://outpost.zeuslink.net/comment/3139968"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700017917 {#4164
    date: 2023-11-15 04:11:57.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
32 DENIED moderate
App\Entity\EntryComment {#4169
  +user: App\Entity\User {#4182 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: null
  +root: null
  +body: "Wow, that looks stunning! I am no where near skilled enough to be able to even begin wrapping my head around making a compositor, even with a library - but I *do* know that like the other commenter mentioned we certainly need more libraries aside from the two that we currently have (but I understand why that’s a very tall order) so major props to you!"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 3
  +score: 0
  +lastActive: DateTime @1700330888 {#4163
    date: 2023-11-18 19:08:08.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4170 …}
  +nested: Doctrine\ORM\PersistentCollection {#4172 …}
  +votes: Doctrine\ORM\PersistentCollection {#4174 …}
  +reports: Doctrine\ORM\PersistentCollection {#4176 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4178 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4180 …}
  -id: 126001
  -bodyTs: "'abl':14 'around':21 'asid':44 'begin':17 'certain':40 'comment':37 'compositor':24 'current':50 'enough':11 'even':16,25 'head':20 'know':32 'librari':28,43 'like':34 'look':3 'major':63 'make':22 'mention':38 'near':9 'need':41 'order':61 'prop':64 'skill':10 'stun':4 'tall':60 'two':47 'understand':54 'wow':1 'wrap':18"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://outpost.zeuslink.net/comment/3139968"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700017917 {#4164
    date: 2023-11-15 04:11:57.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
33 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
34 DENIED moderate
App\Entity\EntryComment {#4909
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4169
    +user: App\Entity\User {#4182 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: "Wow, that looks stunning! I am no where near skilled enough to be able to even begin wrapping my head around making a compositor, even with a library - but I *do* know that like the other commenter mentioned we certainly need more libraries aside from the two that we currently have (but I understand why that’s a very tall order) so major props to you!"
    +lang: "en"
    +isAdult: false
    +favouriteCount: 3
    +score: 0
    +lastActive: DateTime @1700330888 {#4163
      date: 2023-11-18 19:08:08.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4170 …}
    +nested: Doctrine\ORM\PersistentCollection {#4172 …}
    +votes: Doctrine\ORM\PersistentCollection {#4174 …}
    +reports: Doctrine\ORM\PersistentCollection {#4176 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4178 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4180 …}
    -id: 126001
    -bodyTs: "'abl':14 'around':21 'asid':44 'begin':17 'certain':40 'comment':37 'compositor':24 'current':50 'enough':11 'even':16,25 'head':20 'know':32 'librari':28,43 'like':34 'look':3 'major':63 'make':22 'mention':38 'near':9 'need':41 'order':61 'prop':64 'skill':10 'stun':4 'tall':60 'two':47 'understand':54 'wow':1 'wrap':18"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://outpost.zeuslink.net/comment/3139968"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700017917 {#4164
      date: 2023-11-15 04:11:57.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4169}
  +body: "Thanks, maybe you could follow the [tutorial](https://cuarzosoftware.github.io/Louvre/md_md_tutorial_01.html) if you are interested. And I wouldn’t mind answering doubts; that actually would help me improve the docs ;)"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 0
  +score: 0
  +lastActive: DateTime @1700070469 {#4907
    date: 2023-11-15 18:47:49.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@russjr08@outpost.zeuslink.net"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4910 …}
  +nested: Doctrine\ORM\PersistentCollection {#4912 …}
  +votes: Doctrine\ORM\PersistentCollection {#4914 …}
  +reports: Doctrine\ORM\PersistentCollection {#4916 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4918 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4920 …}
  -id: 127542
  -bodyTs: "'/louvre/md_md_tutorial_01.html)':10 'actual':23 'answer':20 'could':4 'cuarzosoftware.github.io':9 'cuarzosoftware.github.io/louvre/md_md_tutorial_01.html)':8 'doc':29 'doubt':21 'follow':5 'help':25 'improv':27 'interest':14 'mayb':2 'mind':19 'thank':1 'tutori':7 'would':24 'wouldn':17"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5336338"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700070469 {#4908
    date: 2023-11-15 18:47:49.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
35 DENIED edit
App\Entity\EntryComment {#4909
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4169
    +user: App\Entity\User {#4182 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: "Wow, that looks stunning! I am no where near skilled enough to be able to even begin wrapping my head around making a compositor, even with a library - but I *do* know that like the other commenter mentioned we certainly need more libraries aside from the two that we currently have (but I understand why that’s a very tall order) so major props to you!"
    +lang: "en"
    +isAdult: false
    +favouriteCount: 3
    +score: 0
    +lastActive: DateTime @1700330888 {#4163
      date: 2023-11-18 19:08:08.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4170 …}
    +nested: Doctrine\ORM\PersistentCollection {#4172 …}
    +votes: Doctrine\ORM\PersistentCollection {#4174 …}
    +reports: Doctrine\ORM\PersistentCollection {#4176 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4178 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4180 …}
    -id: 126001
    -bodyTs: "'abl':14 'around':21 'asid':44 'begin':17 'certain':40 'comment':37 'compositor':24 'current':50 'enough':11 'even':16,25 'head':20 'know':32 'librari':28,43 'like':34 'look':3 'major':63 'make':22 'mention':38 'near':9 'need':41 'order':61 'prop':64 'skill':10 'stun':4 'tall':60 'two':47 'understand':54 'wow':1 'wrap':18"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://outpost.zeuslink.net/comment/3139968"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700017917 {#4164
      date: 2023-11-15 04:11:57.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4169}
  +body: "Thanks, maybe you could follow the [tutorial](https://cuarzosoftware.github.io/Louvre/md_md_tutorial_01.html) if you are interested. And I wouldn’t mind answering doubts; that actually would help me improve the docs ;)"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 0
  +score: 0
  +lastActive: DateTime @1700070469 {#4907
    date: 2023-11-15 18:47:49.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@russjr08@outpost.zeuslink.net"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4910 …}
  +nested: Doctrine\ORM\PersistentCollection {#4912 …}
  +votes: Doctrine\ORM\PersistentCollection {#4914 …}
  +reports: Doctrine\ORM\PersistentCollection {#4916 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4918 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4920 …}
  -id: 127542
  -bodyTs: "'/louvre/md_md_tutorial_01.html)':10 'actual':23 'answer':20 'could':4 'cuarzosoftware.github.io':9 'cuarzosoftware.github.io/louvre/md_md_tutorial_01.html)':8 'doc':29 'doubt':21 'follow':5 'help':25 'improv':27 'interest':14 'mayb':2 'mind':19 'thank':1 'tutori':7 'would':24 'wouldn':17"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5336338"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700070469 {#4908
    date: 2023-11-15 18:47:49.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
36 DENIED moderate
App\Entity\EntryComment {#4909
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4169
    +user: App\Entity\User {#4182 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: "Wow, that looks stunning! I am no where near skilled enough to be able to even begin wrapping my head around making a compositor, even with a library - but I *do* know that like the other commenter mentioned we certainly need more libraries aside from the two that we currently have (but I understand why that’s a very tall order) so major props to you!"
    +lang: "en"
    +isAdult: false
    +favouriteCount: 3
    +score: 0
    +lastActive: DateTime @1700330888 {#4163
      date: 2023-11-18 19:08:08.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4170 …}
    +nested: Doctrine\ORM\PersistentCollection {#4172 …}
    +votes: Doctrine\ORM\PersistentCollection {#4174 …}
    +reports: Doctrine\ORM\PersistentCollection {#4176 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4178 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4180 …}
    -id: 126001
    -bodyTs: "'abl':14 'around':21 'asid':44 'begin':17 'certain':40 'comment':37 'compositor':24 'current':50 'enough':11 'even':16,25 'head':20 'know':32 'librari':28,43 'like':34 'look':3 'major':63 'make':22 'mention':38 'near':9 'need':41 'order':61 'prop':64 'skill':10 'stun':4 'tall':60 'two':47 'understand':54 'wow':1 'wrap':18"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://outpost.zeuslink.net/comment/3139968"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700017917 {#4164
      date: 2023-11-15 04:11:57.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4169}
  +body: "Thanks, maybe you could follow the [tutorial](https://cuarzosoftware.github.io/Louvre/md_md_tutorial_01.html) if you are interested. And I wouldn’t mind answering doubts; that actually would help me improve the docs ;)"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 0
  +score: 0
  +lastActive: DateTime @1700070469 {#4907
    date: 2023-11-15 18:47:49.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@russjr08@outpost.zeuslink.net"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4910 …}
  +nested: Doctrine\ORM\PersistentCollection {#4912 …}
  +votes: Doctrine\ORM\PersistentCollection {#4914 …}
  +reports: Doctrine\ORM\PersistentCollection {#4916 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4918 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4920 …}
  -id: 127542
  -bodyTs: "'/louvre/md_md_tutorial_01.html)':10 'actual':23 'answer':20 'could':4 'cuarzosoftware.github.io':9 'cuarzosoftware.github.io/louvre/md_md_tutorial_01.html)':8 'doc':29 'doubt':21 'follow':5 'help':25 'improv':27 'interest':14 'mayb':2 'mind':19 'thank':1 'tutori':7 'would':24 'wouldn':17"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5336338"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700070469 {#4908
    date: 2023-11-15 18:47:49.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
37 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
38 DENIED moderate
App\Entity\EntryComment {#4243
  +user: App\Entity\User {#4256 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: null
  +root: null
  +body: "What does “Single, Double or Triple Buffering” mean?"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 2
  +score: 0
  +lastActive: DateTime @1700253440 {#4238
    date: 2023-11-17 21:37:20.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4244 …}
  +nested: Doctrine\ORM\PersistentCollection {#4246 …}
  +votes: Doctrine\ORM\PersistentCollection {#4248 …}
  +reports: Doctrine\ORM\PersistentCollection {#4250 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4252 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4254 …}
  -id: 125331
  -bodyTs: "'buffer':7 'doubl':4 'mean':8 'singl':3 'tripl':6"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.ml/comment/5803290"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700001174 {#4239
    date: 2023-11-14 23:32:54.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
39 DENIED edit
App\Entity\EntryComment {#4243
  +user: App\Entity\User {#4256 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: null
  +root: null
  +body: "What does “Single, Double or Triple Buffering” mean?"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 2
  +score: 0
  +lastActive: DateTime @1700253440 {#4238
    date: 2023-11-17 21:37:20.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4244 …}
  +nested: Doctrine\ORM\PersistentCollection {#4246 …}
  +votes: Doctrine\ORM\PersistentCollection {#4248 …}
  +reports: Doctrine\ORM\PersistentCollection {#4250 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4252 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4254 …}
  -id: 125331
  -bodyTs: "'buffer':7 'doubl':4 'mean':8 'singl':3 'tripl':6"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.ml/comment/5803290"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700001174 {#4239
    date: 2023-11-14 23:32:54.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
40 DENIED moderate
App\Entity\EntryComment {#4243
  +user: App\Entity\User {#4256 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: null
  +root: null
  +body: "What does “Single, Double or Triple Buffering” mean?"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 2
  +score: 0
  +lastActive: DateTime @1700253440 {#4238
    date: 2023-11-17 21:37:20.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4244 …}
  +nested: Doctrine\ORM\PersistentCollection {#4246 …}
  +votes: Doctrine\ORM\PersistentCollection {#4248 …}
  +reports: Doctrine\ORM\PersistentCollection {#4250 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4252 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4254 …}
  -id: 125331
  -bodyTs: "'buffer':7 'doubl':4 'mean':8 'singl':3 'tripl':6"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.ml/comment/5803290"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700001174 {#4239
    date: 2023-11-14 23:32:54.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
41 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
42 DENIED moderate
App\Entity\EntryComment {#4894
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4243
    +user: App\Entity\User {#4256 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: "What does “Single, Double or Triple Buffering” mean?"
    +lang: "en"
    +isAdult: false
    +favouriteCount: 2
    +score: 0
    +lastActive: DateTime @1700253440 {#4238
      date: 2023-11-17 21:37:20.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4244 …}
    +nested: Doctrine\ORM\PersistentCollection {#4246 …}
    +votes: Doctrine\ORM\PersistentCollection {#4248 …}
    +reports: Doctrine\ORM\PersistentCollection {#4250 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4252 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4254 …}
    -id: 125331
    -bodyTs: "'buffer':7 'doubl':4 'mean':8 'singl':3 'tripl':6"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.ml/comment/5803290"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700001174 {#4239
      date: 2023-11-14 23:32:54.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4243}
  +body: "The idea of single, double, and triple buffering revolves around how many framebuffers we use for display rendering. Typically, we go with double buffering, displaying one framebuffer while rendering happens on the other. Swap them, and the cycle continues. The goal is to prevent screen tearing and glitches from popping up on the screen."
  +lang: "en"
  +isAdult: false
  +favouriteCount: 7
  +score: 0
  +lastActive: DateTime @1700002507 {#4892
    date: 2023-11-14 23:55:07.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@OsrsNeedsF2P@lemmy.ml"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4895 …}
  +nested: Doctrine\ORM\PersistentCollection {#4897 …}
  +votes: Doctrine\ORM\PersistentCollection {#4899 …}
  +reports: Doctrine\ORM\PersistentCollection {#4901 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4903 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4905 …}
  -id: 125417
  -bodyTs: "'around':10 'buffer':8,24 'continu':39 'cycl':38 'display':17,25 'doubl':5,23 'framebuff':13,27 'glitch':48 'go':21 'goal':41 'happen':30 'idea':2 'mani':12 'one':26 'pop':50 'prevent':44 'render':18,29 'revolv':9 'screen':45,54 'singl':4 'swap':34 'tear':46 'tripl':7 'typic':19 'use':15"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5316166"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700002507 {#4893
    date: 2023-11-14 23:55:07.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
43 DENIED edit
App\Entity\EntryComment {#4894
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4243
    +user: App\Entity\User {#4256 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: "What does “Single, Double or Triple Buffering” mean?"
    +lang: "en"
    +isAdult: false
    +favouriteCount: 2
    +score: 0
    +lastActive: DateTime @1700253440 {#4238
      date: 2023-11-17 21:37:20.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4244 …}
    +nested: Doctrine\ORM\PersistentCollection {#4246 …}
    +votes: Doctrine\ORM\PersistentCollection {#4248 …}
    +reports: Doctrine\ORM\PersistentCollection {#4250 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4252 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4254 …}
    -id: 125331
    -bodyTs: "'buffer':7 'doubl':4 'mean':8 'singl':3 'tripl':6"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.ml/comment/5803290"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700001174 {#4239
      date: 2023-11-14 23:32:54.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4243}
  +body: "The idea of single, double, and triple buffering revolves around how many framebuffers we use for display rendering. Typically, we go with double buffering, displaying one framebuffer while rendering happens on the other. Swap them, and the cycle continues. The goal is to prevent screen tearing and glitches from popping up on the screen."
  +lang: "en"
  +isAdult: false
  +favouriteCount: 7
  +score: 0
  +lastActive: DateTime @1700002507 {#4892
    date: 2023-11-14 23:55:07.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@OsrsNeedsF2P@lemmy.ml"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4895 …}
  +nested: Doctrine\ORM\PersistentCollection {#4897 …}
  +votes: Doctrine\ORM\PersistentCollection {#4899 …}
  +reports: Doctrine\ORM\PersistentCollection {#4901 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4903 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4905 …}
  -id: 125417
  -bodyTs: "'around':10 'buffer':8,24 'continu':39 'cycl':38 'display':17,25 'doubl':5,23 'framebuff':13,27 'glitch':48 'go':21 'goal':41 'happen':30 'idea':2 'mani':12 'one':26 'pop':50 'prevent':44 'render':18,29 'revolv':9 'screen':45,54 'singl':4 'swap':34 'tear':46 'tripl':7 'typic':19 'use':15"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5316166"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700002507 {#4893
    date: 2023-11-14 23:55:07.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
44 DENIED moderate
App\Entity\EntryComment {#4894
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4243
    +user: App\Entity\User {#4256 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: "What does “Single, Double or Triple Buffering” mean?"
    +lang: "en"
    +isAdult: false
    +favouriteCount: 2
    +score: 0
    +lastActive: DateTime @1700253440 {#4238
      date: 2023-11-17 21:37:20.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4244 …}
    +nested: Doctrine\ORM\PersistentCollection {#4246 …}
    +votes: Doctrine\ORM\PersistentCollection {#4248 …}
    +reports: Doctrine\ORM\PersistentCollection {#4250 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4252 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4254 …}
    -id: 125331
    -bodyTs: "'buffer':7 'doubl':4 'mean':8 'singl':3 'tripl':6"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.ml/comment/5803290"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700001174 {#4239
      date: 2023-11-14 23:32:54.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4243}
  +body: "The idea of single, double, and triple buffering revolves around how many framebuffers we use for display rendering. Typically, we go with double buffering, displaying one framebuffer while rendering happens on the other. Swap them, and the cycle continues. The goal is to prevent screen tearing and glitches from popping up on the screen."
  +lang: "en"
  +isAdult: false
  +favouriteCount: 7
  +score: 0
  +lastActive: DateTime @1700002507 {#4892
    date: 2023-11-14 23:55:07.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@OsrsNeedsF2P@lemmy.ml"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4895 …}
  +nested: Doctrine\ORM\PersistentCollection {#4897 …}
  +votes: Doctrine\ORM\PersistentCollection {#4899 …}
  +reports: Doctrine\ORM\PersistentCollection {#4901 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4903 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4905 …}
  -id: 125417
  -bodyTs: "'around':10 'buffer':8,24 'continu':39 'cycl':38 'display':17,25 'doubl':5,23 'framebuff':13,27 'glitch':48 'go':21 'goal':41 'happen':30 'idea':2 'mani':12 'one':26 'pop':50 'prevent':44 'render':18,29 'revolv':9 'screen':45,54 'singl':4 'swap':34 'tear':46 'tripl':7 'typic':19 'use':15"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5316166"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700002507 {#4893
    date: 2023-11-14 23:55:07.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
45 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
46 DENIED moderate
App\Entity\EntryComment {#4317
  +user: App\Entity\User {#4330 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: null
  +root: null
  +body: """
    Lets see if I got this right, you (the OP), the creator of Louvre, managed to create an example compositor that looks like a better desktop experience than the entire KDE and GNOME teams could ever develop with their infinite wisdom and funding? Fucking amazing. :)\n
    \n
    I know this is an example, but seriously following the “copy apple down to the last pixel” approach you should consider creating a DE for Linux that doesn’t have themes or any user tweaks, just a simple and pixel-perfect copy of macOS. The problem with GNOME and KDE is that they both fail in simple design principals such as proportions, item spacing and whatnot while Apple, and you by extension, excels in that aspect.\n
    \n
    Furthermore my personal opinion is that GNOME tries to reinvent everything and ends up fucking things up and creating situations like the lack of desktop icons going into the activities view by default etc. KDE however does some other stuff right but they fail really badly in terms of proportions and item spacing. Their taskbar is also a shame, for a group that says they want to copy Windows’ style they aren’t doing that well.\n
    \n
    Desktop experiences when it comes to design peaked with macOS Monterey (after that Apple did changes to the settings that are still not polished) and in terms of usability they peaked with the release of Exposé, Spaces and later their integration on Mission Control (initially bad but now they seem better).\n
    \n
    If you do create a 1:1 copy of macOS desktop experience (and keep it updates) as a new DE you’ll most likely become very popular in no time. It doesn’t need themes, customization and all the personalization that would make it really hard to create, just a simply pixel perfect copy of macOS.
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 4
  +score: 0
  +lastActive: DateTime @1700263915 {#4311
    date: 2023-11-18 00:31:55.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4318 …}
  +nested: Doctrine\ORM\PersistentCollection {#4320 …}
  +votes: Doctrine\ORM\PersistentCollection {#4322 …}
  +reports: Doctrine\ORM\PersistentCollection {#4324 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4326 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4328 …}
  -id: 125250
  -bodyTs: "'1':255,256 'activ':152 'also':179 'amaz':45 'appl':57,114,212 'approach':63 'aren':194 'aspect':122 'bad':168,244 'becom':274 'better':25,249 'chang':214 'come':203 'compositor':20 'consid':66 'control':242 'copi':56,88,190,257,303 'could':35 'creat':17,67,141,253,297 'creator':12 'custom':285 'de':69,269 'default':155 'design':104,205 'desktop':26,147,199,260 'develop':37 'doesn':73,281 'end':135 'entir':30 'etc':156 'ever':36 'everyth':133 'exampl':19,51 'excel':119 'experi':27,200,261 'exposé':234 'extens':118 'fail':101,166 'follow':54 'fuck':44,137 'fund':43 'furthermor':123 'gnome':33,94,129 'go':149 'got':5 'group':184 'hard':295 'howev':158 'icon':148 'infinit':40 'initi':243 'integr':239 'item':109,174 'kde':31,96,157 'keep':263 'know':47 'lack':145 'last':61 'later':237 'let':1 'like':23,143,273 'linux':71 'll':271 'look':22 'louvr':14 'maco':90,208,259,305 'make':292 'manag':15 'mission':241 'monterey':209 'need':283 'new':268 'op':10 'opinion':126 'peak':206,229 'perfect':87,302 'person':125,289 'pixel':62,86,301 'pixel-perfect':85 'polish':222 'popular':276 'princip':105 'problem':92 'proport':108,172 'realli':167,294 'reinvent':132 'releas':232 'right':7,163 'say':186 'see':2 'seem':248 'serious':53 'set':217 'shame':181 'simpl':83,103 'simpli':300 'situat':142 'space':110,175,235 'still':220 'stuff':162 'style':192 'taskbar':177 'team':34 'term':170,225 'theme':76,284 'thing':138 'time':279 'tri':130 'tweak':80 'updat':265 'usabl':227 'user':79 'view':153 'want':188 'well':198 'whatnot':112 'window':191 'wisdom':41 'would':291"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5315293"
  +editedAt: DateTimeImmutable @1700250907 {#4312
    date: 2023-11-17 20:55:07.0 +01:00
  }
  +createdAt: DateTimeImmutable @1700000189 {#4313
    date: 2023-11-14 23:16:29.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
47 DENIED edit
App\Entity\EntryComment {#4317
  +user: App\Entity\User {#4330 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: null
  +root: null
  +body: """
    Lets see if I got this right, you (the OP), the creator of Louvre, managed to create an example compositor that looks like a better desktop experience than the entire KDE and GNOME teams could ever develop with their infinite wisdom and funding? Fucking amazing. :)\n
    \n
    I know this is an example, but seriously following the “copy apple down to the last pixel” approach you should consider creating a DE for Linux that doesn’t have themes or any user tweaks, just a simple and pixel-perfect copy of macOS. The problem with GNOME and KDE is that they both fail in simple design principals such as proportions, item spacing and whatnot while Apple, and you by extension, excels in that aspect.\n
    \n
    Furthermore my personal opinion is that GNOME tries to reinvent everything and ends up fucking things up and creating situations like the lack of desktop icons going into the activities view by default etc. KDE however does some other stuff right but they fail really badly in terms of proportions and item spacing. Their taskbar is also a shame, for a group that says they want to copy Windows’ style they aren’t doing that well.\n
    \n
    Desktop experiences when it comes to design peaked with macOS Monterey (after that Apple did changes to the settings that are still not polished) and in terms of usability they peaked with the release of Exposé, Spaces and later their integration on Mission Control (initially bad but now they seem better).\n
    \n
    If you do create a 1:1 copy of macOS desktop experience (and keep it updates) as a new DE you’ll most likely become very popular in no time. It doesn’t need themes, customization and all the personalization that would make it really hard to create, just a simply pixel perfect copy of macOS.
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 4
  +score: 0
  +lastActive: DateTime @1700263915 {#4311
    date: 2023-11-18 00:31:55.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4318 …}
  +nested: Doctrine\ORM\PersistentCollection {#4320 …}
  +votes: Doctrine\ORM\PersistentCollection {#4322 …}
  +reports: Doctrine\ORM\PersistentCollection {#4324 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4326 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4328 …}
  -id: 125250
  -bodyTs: "'1':255,256 'activ':152 'also':179 'amaz':45 'appl':57,114,212 'approach':63 'aren':194 'aspect':122 'bad':168,244 'becom':274 'better':25,249 'chang':214 'come':203 'compositor':20 'consid':66 'control':242 'copi':56,88,190,257,303 'could':35 'creat':17,67,141,253,297 'creator':12 'custom':285 'de':69,269 'default':155 'design':104,205 'desktop':26,147,199,260 'develop':37 'doesn':73,281 'end':135 'entir':30 'etc':156 'ever':36 'everyth':133 'exampl':19,51 'excel':119 'experi':27,200,261 'exposé':234 'extens':118 'fail':101,166 'follow':54 'fuck':44,137 'fund':43 'furthermor':123 'gnome':33,94,129 'go':149 'got':5 'group':184 'hard':295 'howev':158 'icon':148 'infinit':40 'initi':243 'integr':239 'item':109,174 'kde':31,96,157 'keep':263 'know':47 'lack':145 'last':61 'later':237 'let':1 'like':23,143,273 'linux':71 'll':271 'look':22 'louvr':14 'maco':90,208,259,305 'make':292 'manag':15 'mission':241 'monterey':209 'need':283 'new':268 'op':10 'opinion':126 'peak':206,229 'perfect':87,302 'person':125,289 'pixel':62,86,301 'pixel-perfect':85 'polish':222 'popular':276 'princip':105 'problem':92 'proport':108,172 'realli':167,294 'reinvent':132 'releas':232 'right':7,163 'say':186 'see':2 'seem':248 'serious':53 'set':217 'shame':181 'simpl':83,103 'simpli':300 'situat':142 'space':110,175,235 'still':220 'stuff':162 'style':192 'taskbar':177 'team':34 'term':170,225 'theme':76,284 'thing':138 'time':279 'tri':130 'tweak':80 'updat':265 'usabl':227 'user':79 'view':153 'want':188 'well':198 'whatnot':112 'window':191 'wisdom':41 'would':291"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5315293"
  +editedAt: DateTimeImmutable @1700250907 {#4312
    date: 2023-11-17 20:55:07.0 +01:00
  }
  +createdAt: DateTimeImmutable @1700000189 {#4313
    date: 2023-11-14 23:16:29.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
48 DENIED moderate
App\Entity\EntryComment {#4317
  +user: App\Entity\User {#4330 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: null
  +root: null
  +body: """
    Lets see if I got this right, you (the OP), the creator of Louvre, managed to create an example compositor that looks like a better desktop experience than the entire KDE and GNOME teams could ever develop with their infinite wisdom and funding? Fucking amazing. :)\n
    \n
    I know this is an example, but seriously following the “copy apple down to the last pixel” approach you should consider creating a DE for Linux that doesn’t have themes or any user tweaks, just a simple and pixel-perfect copy of macOS. The problem with GNOME and KDE is that they both fail in simple design principals such as proportions, item spacing and whatnot while Apple, and you by extension, excels in that aspect.\n
    \n
    Furthermore my personal opinion is that GNOME tries to reinvent everything and ends up fucking things up and creating situations like the lack of desktop icons going into the activities view by default etc. KDE however does some other stuff right but they fail really badly in terms of proportions and item spacing. Their taskbar is also a shame, for a group that says they want to copy Windows’ style they aren’t doing that well.\n
    \n
    Desktop experiences when it comes to design peaked with macOS Monterey (after that Apple did changes to the settings that are still not polished) and in terms of usability they peaked with the release of Exposé, Spaces and later their integration on Mission Control (initially bad but now they seem better).\n
    \n
    If you do create a 1:1 copy of macOS desktop experience (and keep it updates) as a new DE you’ll most likely become very popular in no time. It doesn’t need themes, customization and all the personalization that would make it really hard to create, just a simply pixel perfect copy of macOS.
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 4
  +score: 0
  +lastActive: DateTime @1700263915 {#4311
    date: 2023-11-18 00:31:55.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4318 …}
  +nested: Doctrine\ORM\PersistentCollection {#4320 …}
  +votes: Doctrine\ORM\PersistentCollection {#4322 …}
  +reports: Doctrine\ORM\PersistentCollection {#4324 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4326 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4328 …}
  -id: 125250
  -bodyTs: "'1':255,256 'activ':152 'also':179 'amaz':45 'appl':57,114,212 'approach':63 'aren':194 'aspect':122 'bad':168,244 'becom':274 'better':25,249 'chang':214 'come':203 'compositor':20 'consid':66 'control':242 'copi':56,88,190,257,303 'could':35 'creat':17,67,141,253,297 'creator':12 'custom':285 'de':69,269 'default':155 'design':104,205 'desktop':26,147,199,260 'develop':37 'doesn':73,281 'end':135 'entir':30 'etc':156 'ever':36 'everyth':133 'exampl':19,51 'excel':119 'experi':27,200,261 'exposé':234 'extens':118 'fail':101,166 'follow':54 'fuck':44,137 'fund':43 'furthermor':123 'gnome':33,94,129 'go':149 'got':5 'group':184 'hard':295 'howev':158 'icon':148 'infinit':40 'initi':243 'integr':239 'item':109,174 'kde':31,96,157 'keep':263 'know':47 'lack':145 'last':61 'later':237 'let':1 'like':23,143,273 'linux':71 'll':271 'look':22 'louvr':14 'maco':90,208,259,305 'make':292 'manag':15 'mission':241 'monterey':209 'need':283 'new':268 'op':10 'opinion':126 'peak':206,229 'perfect':87,302 'person':125,289 'pixel':62,86,301 'pixel-perfect':85 'polish':222 'popular':276 'princip':105 'problem':92 'proport':108,172 'realli':167,294 'reinvent':132 'releas':232 'right':7,163 'say':186 'see':2 'seem':248 'serious':53 'set':217 'shame':181 'simpl':83,103 'simpli':300 'situat':142 'space':110,175,235 'still':220 'stuff':162 'style':192 'taskbar':177 'team':34 'term':170,225 'theme':76,284 'thing':138 'time':279 'tri':130 'tweak':80 'updat':265 'usabl':227 'user':79 'view':153 'want':188 'well':198 'whatnot':112 'window':191 'wisdom':41 'would':291"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5315293"
  +editedAt: DateTimeImmutable @1700250907 {#4312
    date: 2023-11-17 20:55:07.0 +01:00
  }
  +createdAt: DateTimeImmutable @1700000189 {#4313
    date: 2023-11-14 23:16:29.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
49 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
50 DENIED moderate
App\Entity\EntryComment {#4879
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4317
    +user: App\Entity\User {#4330 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: """
      Lets see if I got this right, you (the OP), the creator of Louvre, managed to create an example compositor that looks like a better desktop experience than the entire KDE and GNOME teams could ever develop with their infinite wisdom and funding? Fucking amazing. :)\n
      \n
      I know this is an example, but seriously following the “copy apple down to the last pixel” approach you should consider creating a DE for Linux that doesn’t have themes or any user tweaks, just a simple and pixel-perfect copy of macOS. The problem with GNOME and KDE is that they both fail in simple design principals such as proportions, item spacing and whatnot while Apple, and you by extension, excels in that aspect.\n
      \n
      Furthermore my personal opinion is that GNOME tries to reinvent everything and ends up fucking things up and creating situations like the lack of desktop icons going into the activities view by default etc. KDE however does some other stuff right but they fail really badly in terms of proportions and item spacing. Their taskbar is also a shame, for a group that says they want to copy Windows’ style they aren’t doing that well.\n
      \n
      Desktop experiences when it comes to design peaked with macOS Monterey (after that Apple did changes to the settings that are still not polished) and in terms of usability they peaked with the release of Exposé, Spaces and later their integration on Mission Control (initially bad but now they seem better).\n
      \n
      If you do create a 1:1 copy of macOS desktop experience (and keep it updates) as a new DE you’ll most likely become very popular in no time. It doesn’t need themes, customization and all the personalization that would make it really hard to create, just a simply pixel perfect copy of macOS.
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 4
    +score: 0
    +lastActive: DateTime @1700263915 {#4311
      date: 2023-11-18 00:31:55.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4318 …}
    +nested: Doctrine\ORM\PersistentCollection {#4320 …}
    +votes: Doctrine\ORM\PersistentCollection {#4322 …}
    +reports: Doctrine\ORM\PersistentCollection {#4324 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4326 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4328 …}
    -id: 125250
    -bodyTs: "'1':255,256 'activ':152 'also':179 'amaz':45 'appl':57,114,212 'approach':63 'aren':194 'aspect':122 'bad':168,244 'becom':274 'better':25,249 'chang':214 'come':203 'compositor':20 'consid':66 'control':242 'copi':56,88,190,257,303 'could':35 'creat':17,67,141,253,297 'creator':12 'custom':285 'de':69,269 'default':155 'design':104,205 'desktop':26,147,199,260 'develop':37 'doesn':73,281 'end':135 'entir':30 'etc':156 'ever':36 'everyth':133 'exampl':19,51 'excel':119 'experi':27,200,261 'exposé':234 'extens':118 'fail':101,166 'follow':54 'fuck':44,137 'fund':43 'furthermor':123 'gnome':33,94,129 'go':149 'got':5 'group':184 'hard':295 'howev':158 'icon':148 'infinit':40 'initi':243 'integr':239 'item':109,174 'kde':31,96,157 'keep':263 'know':47 'lack':145 'last':61 'later':237 'let':1 'like':23,143,273 'linux':71 'll':271 'look':22 'louvr':14 'maco':90,208,259,305 'make':292 'manag':15 'mission':241 'monterey':209 'need':283 'new':268 'op':10 'opinion':126 'peak':206,229 'perfect':87,302 'person':125,289 'pixel':62,86,301 'pixel-perfect':85 'polish':222 'popular':276 'princip':105 'problem':92 'proport':108,172 'realli':167,294 'reinvent':132 'releas':232 'right':7,163 'say':186 'see':2 'seem':248 'serious':53 'set':217 'shame':181 'simpl':83,103 'simpli':300 'situat':142 'space':110,175,235 'still':220 'stuff':162 'style':192 'taskbar':177 'team':34 'term':170,225 'theme':76,284 'thing':138 'time':279 'tri':130 'tweak':80 'updat':265 'usabl':227 'user':79 'view':153 'want':188 'well':198 'whatnot':112 'window':191 'wisdom':41 'would':291"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.world/comment/5315293"
    +editedAt: DateTimeImmutable @1700250907 {#4312
      date: 2023-11-17 20:55:07.0 +01:00
    }
    +createdAt: DateTimeImmutable @1700000189 {#4313
      date: 2023-11-14 23:16:29.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4317}
  +body: "Thanks! While I may have nailed server-side decorations in that example, as you know, there is too much other stuff to take into account to make a DE actually functional. So, I respect a lot what KDE and GNOME do and the innovations they make. I actually want to create a macOS clone, hahaha. That is one of the reasons I started this project. I will soon continue working on a library for exposing global menus in Wayland/X11. Qt allows defining a custom platform plugin, enabling us to plug external systems for managing global menus. Sadly, I think GTK4 no longer supports that, so I believe an approach would be to display a standard menu with basic functions for apps that don’t support it."
  +lang: "en"
  +isAdult: false
  +favouriteCount: 8
  +score: 0
  +lastActive: DateTime @1700001847 {#4877
    date: 2023-11-14 23:44:07.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@TCB13@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4880 …}
  +nested: Doctrine\ORM\PersistentCollection {#4882 …}
  +votes: Doctrine\ORM\PersistentCollection {#4884 …}
  +reports: Doctrine\ORM\PersistentCollection {#4886 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4888 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4890 …}
  -id: 125375
  -bodyTs: "'account':26 'actual':31,49 'allow':82 'app':122 'approach':110 'basic':119 'believ':108 'clone':55 'continu':70 'creat':52 'custom':85 'de':30 'decor':10 'defin':83 'display':114 'enabl':88 'exampl':13 'expos':76 'extern':92 'function':32,120 'global':77,96 'gnome':41 'gtk4':101 'hahaha':56 'innov':45 'kde':39 'know':16 'librari':74 'longer':103 'lot':37 'maco':54 'make':28,47 'manag':95 'may':4 'menu':117 'menus':78,97 'much':20 'nail':6 'one':59 'platform':86 'plug':91 'plugin':87 'project':66 'qt':81 'reason':62 'respect':35 'sad':98 'server':8 'server-sid':7 'side':9 'soon':69 'standard':116 'start':64 'stuff':22 'support':104,126 'system':93 'take':24 'thank':1 'think':100 'us':89 'want':50 'wayland/x11':80 'work':71 'would':111"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5315925"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700001847 {#4878
    date: 2023-11-14 23:44:07.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
51 DENIED edit
App\Entity\EntryComment {#4879
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4317
    +user: App\Entity\User {#4330 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: """
      Lets see if I got this right, you (the OP), the creator of Louvre, managed to create an example compositor that looks like a better desktop experience than the entire KDE and GNOME teams could ever develop with their infinite wisdom and funding? Fucking amazing. :)\n
      \n
      I know this is an example, but seriously following the “copy apple down to the last pixel” approach you should consider creating a DE for Linux that doesn’t have themes or any user tweaks, just a simple and pixel-perfect copy of macOS. The problem with GNOME and KDE is that they both fail in simple design principals such as proportions, item spacing and whatnot while Apple, and you by extension, excels in that aspect.\n
      \n
      Furthermore my personal opinion is that GNOME tries to reinvent everything and ends up fucking things up and creating situations like the lack of desktop icons going into the activities view by default etc. KDE however does some other stuff right but they fail really badly in terms of proportions and item spacing. Their taskbar is also a shame, for a group that says they want to copy Windows’ style they aren’t doing that well.\n
      \n
      Desktop experiences when it comes to design peaked with macOS Monterey (after that Apple did changes to the settings that are still not polished) and in terms of usability they peaked with the release of Exposé, Spaces and later their integration on Mission Control (initially bad but now they seem better).\n
      \n
      If you do create a 1:1 copy of macOS desktop experience (and keep it updates) as a new DE you’ll most likely become very popular in no time. It doesn’t need themes, customization and all the personalization that would make it really hard to create, just a simply pixel perfect copy of macOS.
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 4
    +score: 0
    +lastActive: DateTime @1700263915 {#4311
      date: 2023-11-18 00:31:55.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4318 …}
    +nested: Doctrine\ORM\PersistentCollection {#4320 …}
    +votes: Doctrine\ORM\PersistentCollection {#4322 …}
    +reports: Doctrine\ORM\PersistentCollection {#4324 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4326 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4328 …}
    -id: 125250
    -bodyTs: "'1':255,256 'activ':152 'also':179 'amaz':45 'appl':57,114,212 'approach':63 'aren':194 'aspect':122 'bad':168,244 'becom':274 'better':25,249 'chang':214 'come':203 'compositor':20 'consid':66 'control':242 'copi':56,88,190,257,303 'could':35 'creat':17,67,141,253,297 'creator':12 'custom':285 'de':69,269 'default':155 'design':104,205 'desktop':26,147,199,260 'develop':37 'doesn':73,281 'end':135 'entir':30 'etc':156 'ever':36 'everyth':133 'exampl':19,51 'excel':119 'experi':27,200,261 'exposé':234 'extens':118 'fail':101,166 'follow':54 'fuck':44,137 'fund':43 'furthermor':123 'gnome':33,94,129 'go':149 'got':5 'group':184 'hard':295 'howev':158 'icon':148 'infinit':40 'initi':243 'integr':239 'item':109,174 'kde':31,96,157 'keep':263 'know':47 'lack':145 'last':61 'later':237 'let':1 'like':23,143,273 'linux':71 'll':271 'look':22 'louvr':14 'maco':90,208,259,305 'make':292 'manag':15 'mission':241 'monterey':209 'need':283 'new':268 'op':10 'opinion':126 'peak':206,229 'perfect':87,302 'person':125,289 'pixel':62,86,301 'pixel-perfect':85 'polish':222 'popular':276 'princip':105 'problem':92 'proport':108,172 'realli':167,294 'reinvent':132 'releas':232 'right':7,163 'say':186 'see':2 'seem':248 'serious':53 'set':217 'shame':181 'simpl':83,103 'simpli':300 'situat':142 'space':110,175,235 'still':220 'stuff':162 'style':192 'taskbar':177 'team':34 'term':170,225 'theme':76,284 'thing':138 'time':279 'tri':130 'tweak':80 'updat':265 'usabl':227 'user':79 'view':153 'want':188 'well':198 'whatnot':112 'window':191 'wisdom':41 'would':291"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.world/comment/5315293"
    +editedAt: DateTimeImmutable @1700250907 {#4312
      date: 2023-11-17 20:55:07.0 +01:00
    }
    +createdAt: DateTimeImmutable @1700000189 {#4313
      date: 2023-11-14 23:16:29.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4317}
  +body: "Thanks! While I may have nailed server-side decorations in that example, as you know, there is too much other stuff to take into account to make a DE actually functional. So, I respect a lot what KDE and GNOME do and the innovations they make. I actually want to create a macOS clone, hahaha. That is one of the reasons I started this project. I will soon continue working on a library for exposing global menus in Wayland/X11. Qt allows defining a custom platform plugin, enabling us to plug external systems for managing global menus. Sadly, I think GTK4 no longer supports that, so I believe an approach would be to display a standard menu with basic functions for apps that don’t support it."
  +lang: "en"
  +isAdult: false
  +favouriteCount: 8
  +score: 0
  +lastActive: DateTime @1700001847 {#4877
    date: 2023-11-14 23:44:07.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@TCB13@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4880 …}
  +nested: Doctrine\ORM\PersistentCollection {#4882 …}
  +votes: Doctrine\ORM\PersistentCollection {#4884 …}
  +reports: Doctrine\ORM\PersistentCollection {#4886 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4888 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4890 …}
  -id: 125375
  -bodyTs: "'account':26 'actual':31,49 'allow':82 'app':122 'approach':110 'basic':119 'believ':108 'clone':55 'continu':70 'creat':52 'custom':85 'de':30 'decor':10 'defin':83 'display':114 'enabl':88 'exampl':13 'expos':76 'extern':92 'function':32,120 'global':77,96 'gnome':41 'gtk4':101 'hahaha':56 'innov':45 'kde':39 'know':16 'librari':74 'longer':103 'lot':37 'maco':54 'make':28,47 'manag':95 'may':4 'menu':117 'menus':78,97 'much':20 'nail':6 'one':59 'platform':86 'plug':91 'plugin':87 'project':66 'qt':81 'reason':62 'respect':35 'sad':98 'server':8 'server-sid':7 'side':9 'soon':69 'standard':116 'start':64 'stuff':22 'support':104,126 'system':93 'take':24 'thank':1 'think':100 'us':89 'want':50 'wayland/x11':80 'work':71 'would':111"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5315925"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700001847 {#4878
    date: 2023-11-14 23:44:07.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
52 DENIED moderate
App\Entity\EntryComment {#4879
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4317
    +user: App\Entity\User {#4330 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: """
      Lets see if I got this right, you (the OP), the creator of Louvre, managed to create an example compositor that looks like a better desktop experience than the entire KDE and GNOME teams could ever develop with their infinite wisdom and funding? Fucking amazing. :)\n
      \n
      I know this is an example, but seriously following the “copy apple down to the last pixel” approach you should consider creating a DE for Linux that doesn’t have themes or any user tweaks, just a simple and pixel-perfect copy of macOS. The problem with GNOME and KDE is that they both fail in simple design principals such as proportions, item spacing and whatnot while Apple, and you by extension, excels in that aspect.\n
      \n
      Furthermore my personal opinion is that GNOME tries to reinvent everything and ends up fucking things up and creating situations like the lack of desktop icons going into the activities view by default etc. KDE however does some other stuff right but they fail really badly in terms of proportions and item spacing. Their taskbar is also a shame, for a group that says they want to copy Windows’ style they aren’t doing that well.\n
      \n
      Desktop experiences when it comes to design peaked with macOS Monterey (after that Apple did changes to the settings that are still not polished) and in terms of usability they peaked with the release of Exposé, Spaces and later their integration on Mission Control (initially bad but now they seem better).\n
      \n
      If you do create a 1:1 copy of macOS desktop experience (and keep it updates) as a new DE you’ll most likely become very popular in no time. It doesn’t need themes, customization and all the personalization that would make it really hard to create, just a simply pixel perfect copy of macOS.
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 4
    +score: 0
    +lastActive: DateTime @1700263915 {#4311
      date: 2023-11-18 00:31:55.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4318 …}
    +nested: Doctrine\ORM\PersistentCollection {#4320 …}
    +votes: Doctrine\ORM\PersistentCollection {#4322 …}
    +reports: Doctrine\ORM\PersistentCollection {#4324 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4326 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4328 …}
    -id: 125250
    -bodyTs: "'1':255,256 'activ':152 'also':179 'amaz':45 'appl':57,114,212 'approach':63 'aren':194 'aspect':122 'bad':168,244 'becom':274 'better':25,249 'chang':214 'come':203 'compositor':20 'consid':66 'control':242 'copi':56,88,190,257,303 'could':35 'creat':17,67,141,253,297 'creator':12 'custom':285 'de':69,269 'default':155 'design':104,205 'desktop':26,147,199,260 'develop':37 'doesn':73,281 'end':135 'entir':30 'etc':156 'ever':36 'everyth':133 'exampl':19,51 'excel':119 'experi':27,200,261 'exposé':234 'extens':118 'fail':101,166 'follow':54 'fuck':44,137 'fund':43 'furthermor':123 'gnome':33,94,129 'go':149 'got':5 'group':184 'hard':295 'howev':158 'icon':148 'infinit':40 'initi':243 'integr':239 'item':109,174 'kde':31,96,157 'keep':263 'know':47 'lack':145 'last':61 'later':237 'let':1 'like':23,143,273 'linux':71 'll':271 'look':22 'louvr':14 'maco':90,208,259,305 'make':292 'manag':15 'mission':241 'monterey':209 'need':283 'new':268 'op':10 'opinion':126 'peak':206,229 'perfect':87,302 'person':125,289 'pixel':62,86,301 'pixel-perfect':85 'polish':222 'popular':276 'princip':105 'problem':92 'proport':108,172 'realli':167,294 'reinvent':132 'releas':232 'right':7,163 'say':186 'see':2 'seem':248 'serious':53 'set':217 'shame':181 'simpl':83,103 'simpli':300 'situat':142 'space':110,175,235 'still':220 'stuff':162 'style':192 'taskbar':177 'team':34 'term':170,225 'theme':76,284 'thing':138 'time':279 'tri':130 'tweak':80 'updat':265 'usabl':227 'user':79 'view':153 'want':188 'well':198 'whatnot':112 'window':191 'wisdom':41 'would':291"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.world/comment/5315293"
    +editedAt: DateTimeImmutable @1700250907 {#4312
      date: 2023-11-17 20:55:07.0 +01:00
    }
    +createdAt: DateTimeImmutable @1700000189 {#4313
      date: 2023-11-14 23:16:29.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4317}
  +body: "Thanks! While I may have nailed server-side decorations in that example, as you know, there is too much other stuff to take into account to make a DE actually functional. So, I respect a lot what KDE and GNOME do and the innovations they make. I actually want to create a macOS clone, hahaha. That is one of the reasons I started this project. I will soon continue working on a library for exposing global menus in Wayland/X11. Qt allows defining a custom platform plugin, enabling us to plug external systems for managing global menus. Sadly, I think GTK4 no longer supports that, so I believe an approach would be to display a standard menu with basic functions for apps that don’t support it."
  +lang: "en"
  +isAdult: false
  +favouriteCount: 8
  +score: 0
  +lastActive: DateTime @1700001847 {#4877
    date: 2023-11-14 23:44:07.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@TCB13@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4880 …}
  +nested: Doctrine\ORM\PersistentCollection {#4882 …}
  +votes: Doctrine\ORM\PersistentCollection {#4884 …}
  +reports: Doctrine\ORM\PersistentCollection {#4886 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4888 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4890 …}
  -id: 125375
  -bodyTs: "'account':26 'actual':31,49 'allow':82 'app':122 'approach':110 'basic':119 'believ':108 'clone':55 'continu':70 'creat':52 'custom':85 'de':30 'decor':10 'defin':83 'display':114 'enabl':88 'exampl':13 'expos':76 'extern':92 'function':32,120 'global':77,96 'gnome':41 'gtk4':101 'hahaha':56 'innov':45 'kde':39 'know':16 'librari':74 'longer':103 'lot':37 'maco':54 'make':28,47 'manag':95 'may':4 'menu':117 'menus':78,97 'much':20 'nail':6 'one':59 'platform':86 'plug':91 'plugin':87 'project':66 'qt':81 'reason':62 'respect':35 'sad':98 'server':8 'server-sid':7 'side':9 'soon':69 'standard':116 'start':64 'stuff':22 'support':104,126 'system':93 'take':24 'thank':1 'think':100 'us':89 'want':50 'wayland/x11':80 'work':71 'would':111"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5315925"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700001847 {#4878
    date: 2023-11-14 23:44:07.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
53 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
54 DENIED moderate
App\Entity\EntryComment {#5008
  +user: App\Entity\User {#4330 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4879
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#4317
      +user: App\Entity\User {#4330 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: null
      +root: null
      +body: """
        Lets see if I got this right, you (the OP), the creator of Louvre, managed to create an example compositor that looks like a better desktop experience than the entire KDE and GNOME teams could ever develop with their infinite wisdom and funding? Fucking amazing. :)\n
        \n
        I know this is an example, but seriously following the “copy apple down to the last pixel” approach you should consider creating a DE for Linux that doesn’t have themes or any user tweaks, just a simple and pixel-perfect copy of macOS. The problem with GNOME and KDE is that they both fail in simple design principals such as proportions, item spacing and whatnot while Apple, and you by extension, excels in that aspect.\n
        \n
        Furthermore my personal opinion is that GNOME tries to reinvent everything and ends up fucking things up and creating situations like the lack of desktop icons going into the activities view by default etc. KDE however does some other stuff right but they fail really badly in terms of proportions and item spacing. Their taskbar is also a shame, for a group that says they want to copy Windows’ style they aren’t doing that well.\n
        \n
        Desktop experiences when it comes to design peaked with macOS Monterey (after that Apple did changes to the settings that are still not polished) and in terms of usability they peaked with the release of Exposé, Spaces and later their integration on Mission Control (initially bad but now they seem better).\n
        \n
        If you do create a 1:1 copy of macOS desktop experience (and keep it updates) as a new DE you’ll most likely become very popular in no time. It doesn’t need themes, customization and all the personalization that would make it really hard to create, just a simply pixel perfect copy of macOS.
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 4
      +score: 0
      +lastActive: DateTime @1700263915 {#4311
        date: 2023-11-18 00:31:55.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4318 …}
      +nested: Doctrine\ORM\PersistentCollection {#4320 …}
      +votes: Doctrine\ORM\PersistentCollection {#4322 …}
      +reports: Doctrine\ORM\PersistentCollection {#4324 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4326 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4328 …}
      -id: 125250
      -bodyTs: "'1':255,256 'activ':152 'also':179 'amaz':45 'appl':57,114,212 'approach':63 'aren':194 'aspect':122 'bad':168,244 'becom':274 'better':25,249 'chang':214 'come':203 'compositor':20 'consid':66 'control':242 'copi':56,88,190,257,303 'could':35 'creat':17,67,141,253,297 'creator':12 'custom':285 'de':69,269 'default':155 'design':104,205 'desktop':26,147,199,260 'develop':37 'doesn':73,281 'end':135 'entir':30 'etc':156 'ever':36 'everyth':133 'exampl':19,51 'excel':119 'experi':27,200,261 'exposé':234 'extens':118 'fail':101,166 'follow':54 'fuck':44,137 'fund':43 'furthermor':123 'gnome':33,94,129 'go':149 'got':5 'group':184 'hard':295 'howev':158 'icon':148 'infinit':40 'initi':243 'integr':239 'item':109,174 'kde':31,96,157 'keep':263 'know':47 'lack':145 'last':61 'later':237 'let':1 'like':23,143,273 'linux':71 'll':271 'look':22 'louvr':14 'maco':90,208,259,305 'make':292 'manag':15 'mission':241 'monterey':209 'need':283 'new':268 'op':10 'opinion':126 'peak':206,229 'perfect':87,302 'person':125,289 'pixel':62,86,301 'pixel-perfect':85 'polish':222 'popular':276 'princip':105 'problem':92 'proport':108,172 'realli':167,294 'reinvent':132 'releas':232 'right':7,163 'say':186 'see':2 'seem':248 'serious':53 'set':217 'shame':181 'simpl':83,103 'simpli':300 'situat':142 'space':110,175,235 'still':220 'stuff':162 'style':192 'taskbar':177 'team':34 'term':170,225 'theme':76,284 'thing':138 'time':279 'tri':130 'tweak':80 'updat':265 'usabl':227 'user':79 'view':153 'want':188 'well':198 'whatnot':112 'window':191 'wisdom':41 'would':291"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemmy.world/comment/5315293"
      +editedAt: DateTimeImmutable @1700250907 {#4312
        date: 2023-11-17 20:55:07.0 +01:00
      }
      +createdAt: DateTimeImmutable @1700000189 {#4313
        date: 2023-11-14 23:16:29.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4317}
    +body: "Thanks! While I may have nailed server-side decorations in that example, as you know, there is too much other stuff to take into account to make a DE actually functional. So, I respect a lot what KDE and GNOME do and the innovations they make. I actually want to create a macOS clone, hahaha. That is one of the reasons I started this project. I will soon continue working on a library for exposing global menus in Wayland/X11. Qt allows defining a custom platform plugin, enabling us to plug external systems for managing global menus. Sadly, I think GTK4 no longer supports that, so I believe an approach would be to display a standard menu with basic functions for apps that don’t support it."
    +lang: "en"
    +isAdult: false
    +favouriteCount: 8
    +score: 0
    +lastActive: DateTime @1700001847 {#4877
      date: 2023-11-14 23:44:07.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@TCB13@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4880 …}
    +nested: Doctrine\ORM\PersistentCollection {#4882 …}
    +votes: Doctrine\ORM\PersistentCollection {#4884 …}
    +reports: Doctrine\ORM\PersistentCollection {#4886 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4888 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4890 …}
    -id: 125375
    -bodyTs: "'account':26 'actual':31,49 'allow':82 'app':122 'approach':110 'basic':119 'believ':108 'clone':55 'continu':70 'creat':52 'custom':85 'de':30 'decor':10 'defin':83 'display':114 'enabl':88 'exampl':13 'expos':76 'extern':92 'function':32,120 'global':77,96 'gnome':41 'gtk4':101 'hahaha':56 'innov':45 'kde':39 'know':16 'librari':74 'longer':103 'lot':37 'maco':54 'make':28,47 'manag':95 'may':4 'menu':117 'menus':78,97 'much':20 'nail':6 'one':59 'platform':86 'plug':91 'plugin':87 'project':66 'qt':81 'reason':62 'respect':35 'sad':98 'server':8 'server-sid':7 'side':9 'soon':69 'standard':116 'start':64 'stuff':22 'support':104,126 'system':93 'take':24 'thank':1 'think':100 'us':89 'want':50 'wayland/x11':80 'work':71 'would':111"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.world/comment/5315925"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700001847 {#4878
      date: 2023-11-14 23:44:07.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4317}
  +body: """
    > I actually want to create a macOS clone, hahaha. That is one of the reasons I started this project.\n
    \n
    Well it seems I’m not the only one then :P
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 1
  +score: 0
  +lastActive: DateTime @1700003129 {#5006
    date: 2023-11-15 00:05:29.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@TCB13@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#5009 …}
  +nested: Doctrine\ORM\PersistentCollection {#5011 …}
  +votes: Doctrine\ORM\PersistentCollection {#5013 …}
  +reports: Doctrine\ORM\PersistentCollection {#5015 …}
  +favourites: Doctrine\ORM\PersistentCollection {#5017 …}
  +notifications: Doctrine\ORM\PersistentCollection {#5019 …}
  -id: 125454
  -bodyTs: "'actual':2 'clone':8 'creat':5 'hahaha':9 'm':24 'maco':7 'one':12,28 'p':30 'project':19 'reason':15 'seem':22 'start':17 'want':3 'well':20"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5316428"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700003129 {#5007
    date: 2023-11-15 00:05:29.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
55 DENIED edit
App\Entity\EntryComment {#5008
  +user: App\Entity\User {#4330 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4879
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#4317
      +user: App\Entity\User {#4330 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: null
      +root: null
      +body: """
        Lets see if I got this right, you (the OP), the creator of Louvre, managed to create an example compositor that looks like a better desktop experience than the entire KDE and GNOME teams could ever develop with their infinite wisdom and funding? Fucking amazing. :)\n
        \n
        I know this is an example, but seriously following the “copy apple down to the last pixel” approach you should consider creating a DE for Linux that doesn’t have themes or any user tweaks, just a simple and pixel-perfect copy of macOS. The problem with GNOME and KDE is that they both fail in simple design principals such as proportions, item spacing and whatnot while Apple, and you by extension, excels in that aspect.\n
        \n
        Furthermore my personal opinion is that GNOME tries to reinvent everything and ends up fucking things up and creating situations like the lack of desktop icons going into the activities view by default etc. KDE however does some other stuff right but they fail really badly in terms of proportions and item spacing. Their taskbar is also a shame, for a group that says they want to copy Windows’ style they aren’t doing that well.\n
        \n
        Desktop experiences when it comes to design peaked with macOS Monterey (after that Apple did changes to the settings that are still not polished) and in terms of usability they peaked with the release of Exposé, Spaces and later their integration on Mission Control (initially bad but now they seem better).\n
        \n
        If you do create a 1:1 copy of macOS desktop experience (and keep it updates) as a new DE you’ll most likely become very popular in no time. It doesn’t need themes, customization and all the personalization that would make it really hard to create, just a simply pixel perfect copy of macOS.
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 4
      +score: 0
      +lastActive: DateTime @1700263915 {#4311
        date: 2023-11-18 00:31:55.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4318 …}
      +nested: Doctrine\ORM\PersistentCollection {#4320 …}
      +votes: Doctrine\ORM\PersistentCollection {#4322 …}
      +reports: Doctrine\ORM\PersistentCollection {#4324 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4326 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4328 …}
      -id: 125250
      -bodyTs: "'1':255,256 'activ':152 'also':179 'amaz':45 'appl':57,114,212 'approach':63 'aren':194 'aspect':122 'bad':168,244 'becom':274 'better':25,249 'chang':214 'come':203 'compositor':20 'consid':66 'control':242 'copi':56,88,190,257,303 'could':35 'creat':17,67,141,253,297 'creator':12 'custom':285 'de':69,269 'default':155 'design':104,205 'desktop':26,147,199,260 'develop':37 'doesn':73,281 'end':135 'entir':30 'etc':156 'ever':36 'everyth':133 'exampl':19,51 'excel':119 'experi':27,200,261 'exposé':234 'extens':118 'fail':101,166 'follow':54 'fuck':44,137 'fund':43 'furthermor':123 'gnome':33,94,129 'go':149 'got':5 'group':184 'hard':295 'howev':158 'icon':148 'infinit':40 'initi':243 'integr':239 'item':109,174 'kde':31,96,157 'keep':263 'know':47 'lack':145 'last':61 'later':237 'let':1 'like':23,143,273 'linux':71 'll':271 'look':22 'louvr':14 'maco':90,208,259,305 'make':292 'manag':15 'mission':241 'monterey':209 'need':283 'new':268 'op':10 'opinion':126 'peak':206,229 'perfect':87,302 'person':125,289 'pixel':62,86,301 'pixel-perfect':85 'polish':222 'popular':276 'princip':105 'problem':92 'proport':108,172 'realli':167,294 'reinvent':132 'releas':232 'right':7,163 'say':186 'see':2 'seem':248 'serious':53 'set':217 'shame':181 'simpl':83,103 'simpli':300 'situat':142 'space':110,175,235 'still':220 'stuff':162 'style':192 'taskbar':177 'team':34 'term':170,225 'theme':76,284 'thing':138 'time':279 'tri':130 'tweak':80 'updat':265 'usabl':227 'user':79 'view':153 'want':188 'well':198 'whatnot':112 'window':191 'wisdom':41 'would':291"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemmy.world/comment/5315293"
      +editedAt: DateTimeImmutable @1700250907 {#4312
        date: 2023-11-17 20:55:07.0 +01:00
      }
      +createdAt: DateTimeImmutable @1700000189 {#4313
        date: 2023-11-14 23:16:29.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4317}
    +body: "Thanks! While I may have nailed server-side decorations in that example, as you know, there is too much other stuff to take into account to make a DE actually functional. So, I respect a lot what KDE and GNOME do and the innovations they make. I actually want to create a macOS clone, hahaha. That is one of the reasons I started this project. I will soon continue working on a library for exposing global menus in Wayland/X11. Qt allows defining a custom platform plugin, enabling us to plug external systems for managing global menus. Sadly, I think GTK4 no longer supports that, so I believe an approach would be to display a standard menu with basic functions for apps that don’t support it."
    +lang: "en"
    +isAdult: false
    +favouriteCount: 8
    +score: 0
    +lastActive: DateTime @1700001847 {#4877
      date: 2023-11-14 23:44:07.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@TCB13@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4880 …}
    +nested: Doctrine\ORM\PersistentCollection {#4882 …}
    +votes: Doctrine\ORM\PersistentCollection {#4884 …}
    +reports: Doctrine\ORM\PersistentCollection {#4886 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4888 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4890 …}
    -id: 125375
    -bodyTs: "'account':26 'actual':31,49 'allow':82 'app':122 'approach':110 'basic':119 'believ':108 'clone':55 'continu':70 'creat':52 'custom':85 'de':30 'decor':10 'defin':83 'display':114 'enabl':88 'exampl':13 'expos':76 'extern':92 'function':32,120 'global':77,96 'gnome':41 'gtk4':101 'hahaha':56 'innov':45 'kde':39 'know':16 'librari':74 'longer':103 'lot':37 'maco':54 'make':28,47 'manag':95 'may':4 'menu':117 'menus':78,97 'much':20 'nail':6 'one':59 'platform':86 'plug':91 'plugin':87 'project':66 'qt':81 'reason':62 'respect':35 'sad':98 'server':8 'server-sid':7 'side':9 'soon':69 'standard':116 'start':64 'stuff':22 'support':104,126 'system':93 'take':24 'thank':1 'think':100 'us':89 'want':50 'wayland/x11':80 'work':71 'would':111"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.world/comment/5315925"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700001847 {#4878
      date: 2023-11-14 23:44:07.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4317}
  +body: """
    > I actually want to create a macOS clone, hahaha. That is one of the reasons I started this project.\n
    \n
    Well it seems I’m not the only one then :P
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 1
  +score: 0
  +lastActive: DateTime @1700003129 {#5006
    date: 2023-11-15 00:05:29.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@TCB13@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#5009 …}
  +nested: Doctrine\ORM\PersistentCollection {#5011 …}
  +votes: Doctrine\ORM\PersistentCollection {#5013 …}
  +reports: Doctrine\ORM\PersistentCollection {#5015 …}
  +favourites: Doctrine\ORM\PersistentCollection {#5017 …}
  +notifications: Doctrine\ORM\PersistentCollection {#5019 …}
  -id: 125454
  -bodyTs: "'actual':2 'clone':8 'creat':5 'hahaha':9 'm':24 'maco':7 'one':12,28 'p':30 'project':19 'reason':15 'seem':22 'start':17 'want':3 'well':20"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5316428"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700003129 {#5007
    date: 2023-11-15 00:05:29.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
56 DENIED moderate
App\Entity\EntryComment {#5008
  +user: App\Entity\User {#4330 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4879
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#4317
      +user: App\Entity\User {#4330 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: null
      +root: null
      +body: """
        Lets see if I got this right, you (the OP), the creator of Louvre, managed to create an example compositor that looks like a better desktop experience than the entire KDE and GNOME teams could ever develop with their infinite wisdom and funding? Fucking amazing. :)\n
        \n
        I know this is an example, but seriously following the “copy apple down to the last pixel” approach you should consider creating a DE for Linux that doesn’t have themes or any user tweaks, just a simple and pixel-perfect copy of macOS. The problem with GNOME and KDE is that they both fail in simple design principals such as proportions, item spacing and whatnot while Apple, and you by extension, excels in that aspect.\n
        \n
        Furthermore my personal opinion is that GNOME tries to reinvent everything and ends up fucking things up and creating situations like the lack of desktop icons going into the activities view by default etc. KDE however does some other stuff right but they fail really badly in terms of proportions and item spacing. Their taskbar is also a shame, for a group that says they want to copy Windows’ style they aren’t doing that well.\n
        \n
        Desktop experiences when it comes to design peaked with macOS Monterey (after that Apple did changes to the settings that are still not polished) and in terms of usability they peaked with the release of Exposé, Spaces and later their integration on Mission Control (initially bad but now they seem better).\n
        \n
        If you do create a 1:1 copy of macOS desktop experience (and keep it updates) as a new DE you’ll most likely become very popular in no time. It doesn’t need themes, customization and all the personalization that would make it really hard to create, just a simply pixel perfect copy of macOS.
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 4
      +score: 0
      +lastActive: DateTime @1700263915 {#4311
        date: 2023-11-18 00:31:55.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4318 …}
      +nested: Doctrine\ORM\PersistentCollection {#4320 …}
      +votes: Doctrine\ORM\PersistentCollection {#4322 …}
      +reports: Doctrine\ORM\PersistentCollection {#4324 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4326 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4328 …}
      -id: 125250
      -bodyTs: "'1':255,256 'activ':152 'also':179 'amaz':45 'appl':57,114,212 'approach':63 'aren':194 'aspect':122 'bad':168,244 'becom':274 'better':25,249 'chang':214 'come':203 'compositor':20 'consid':66 'control':242 'copi':56,88,190,257,303 'could':35 'creat':17,67,141,253,297 'creator':12 'custom':285 'de':69,269 'default':155 'design':104,205 'desktop':26,147,199,260 'develop':37 'doesn':73,281 'end':135 'entir':30 'etc':156 'ever':36 'everyth':133 'exampl':19,51 'excel':119 'experi':27,200,261 'exposé':234 'extens':118 'fail':101,166 'follow':54 'fuck':44,137 'fund':43 'furthermor':123 'gnome':33,94,129 'go':149 'got':5 'group':184 'hard':295 'howev':158 'icon':148 'infinit':40 'initi':243 'integr':239 'item':109,174 'kde':31,96,157 'keep':263 'know':47 'lack':145 'last':61 'later':237 'let':1 'like':23,143,273 'linux':71 'll':271 'look':22 'louvr':14 'maco':90,208,259,305 'make':292 'manag':15 'mission':241 'monterey':209 'need':283 'new':268 'op':10 'opinion':126 'peak':206,229 'perfect':87,302 'person':125,289 'pixel':62,86,301 'pixel-perfect':85 'polish':222 'popular':276 'princip':105 'problem':92 'proport':108,172 'realli':167,294 'reinvent':132 'releas':232 'right':7,163 'say':186 'see':2 'seem':248 'serious':53 'set':217 'shame':181 'simpl':83,103 'simpli':300 'situat':142 'space':110,175,235 'still':220 'stuff':162 'style':192 'taskbar':177 'team':34 'term':170,225 'theme':76,284 'thing':138 'time':279 'tri':130 'tweak':80 'updat':265 'usabl':227 'user':79 'view':153 'want':188 'well':198 'whatnot':112 'window':191 'wisdom':41 'would':291"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemmy.world/comment/5315293"
      +editedAt: DateTimeImmutable @1700250907 {#4312
        date: 2023-11-17 20:55:07.0 +01:00
      }
      +createdAt: DateTimeImmutable @1700000189 {#4313
        date: 2023-11-14 23:16:29.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4317}
    +body: "Thanks! While I may have nailed server-side decorations in that example, as you know, there is too much other stuff to take into account to make a DE actually functional. So, I respect a lot what KDE and GNOME do and the innovations they make. I actually want to create a macOS clone, hahaha. That is one of the reasons I started this project. I will soon continue working on a library for exposing global menus in Wayland/X11. Qt allows defining a custom platform plugin, enabling us to plug external systems for managing global menus. Sadly, I think GTK4 no longer supports that, so I believe an approach would be to display a standard menu with basic functions for apps that don’t support it."
    +lang: "en"
    +isAdult: false
    +favouriteCount: 8
    +score: 0
    +lastActive: DateTime @1700001847 {#4877
      date: 2023-11-14 23:44:07.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@TCB13@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4880 …}
    +nested: Doctrine\ORM\PersistentCollection {#4882 …}
    +votes: Doctrine\ORM\PersistentCollection {#4884 …}
    +reports: Doctrine\ORM\PersistentCollection {#4886 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4888 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4890 …}
    -id: 125375
    -bodyTs: "'account':26 'actual':31,49 'allow':82 'app':122 'approach':110 'basic':119 'believ':108 'clone':55 'continu':70 'creat':52 'custom':85 'de':30 'decor':10 'defin':83 'display':114 'enabl':88 'exampl':13 'expos':76 'extern':92 'function':32,120 'global':77,96 'gnome':41 'gtk4':101 'hahaha':56 'innov':45 'kde':39 'know':16 'librari':74 'longer':103 'lot':37 'maco':54 'make':28,47 'manag':95 'may':4 'menu':117 'menus':78,97 'much':20 'nail':6 'one':59 'platform':86 'plug':91 'plugin':87 'project':66 'qt':81 'reason':62 'respect':35 'sad':98 'server':8 'server-sid':7 'side':9 'soon':69 'standard':116 'start':64 'stuff':22 'support':104,126 'system':93 'take':24 'thank':1 'think':100 'us':89 'want':50 'wayland/x11':80 'work':71 'would':111"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.world/comment/5315925"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700001847 {#4878
      date: 2023-11-14 23:44:07.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4317}
  +body: """
    > I actually want to create a macOS clone, hahaha. That is one of the reasons I started this project.\n
    \n
    Well it seems I’m not the only one then :P
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 1
  +score: 0
  +lastActive: DateTime @1700003129 {#5006
    date: 2023-11-15 00:05:29.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@TCB13@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#5009 …}
  +nested: Doctrine\ORM\PersistentCollection {#5011 …}
  +votes: Doctrine\ORM\PersistentCollection {#5013 …}
  +reports: Doctrine\ORM\PersistentCollection {#5015 …}
  +favourites: Doctrine\ORM\PersistentCollection {#5017 …}
  +notifications: Doctrine\ORM\PersistentCollection {#5019 …}
  -id: 125454
  -bodyTs: "'actual':2 'clone':8 'creat':5 'hahaha':9 'm':24 'maco':7 'one':12,28 'p':30 'project':19 'reason':15 'seem':22 'start':17 'want':3 'well':20"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5316428"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700003129 {#5007
    date: 2023-11-15 00:05:29.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
57 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
58 DENIED moderate
App\Entity\EntryComment {#5023
  +user: Proxies\__CG__\App\Entity\User {#5024 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4879
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#4317
      +user: App\Entity\User {#4330 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: null
      +root: null
      +body: """
        Lets see if I got this right, you (the OP), the creator of Louvre, managed to create an example compositor that looks like a better desktop experience than the entire KDE and GNOME teams could ever develop with their infinite wisdom and funding? Fucking amazing. :)\n
        \n
        I know this is an example, but seriously following the “copy apple down to the last pixel” approach you should consider creating a DE for Linux that doesn’t have themes or any user tweaks, just a simple and pixel-perfect copy of macOS. The problem with GNOME and KDE is that they both fail in simple design principals such as proportions, item spacing and whatnot while Apple, and you by extension, excels in that aspect.\n
        \n
        Furthermore my personal opinion is that GNOME tries to reinvent everything and ends up fucking things up and creating situations like the lack of desktop icons going into the activities view by default etc. KDE however does some other stuff right but they fail really badly in terms of proportions and item spacing. Their taskbar is also a shame, for a group that says they want to copy Windows’ style they aren’t doing that well.\n
        \n
        Desktop experiences when it comes to design peaked with macOS Monterey (after that Apple did changes to the settings that are still not polished) and in terms of usability they peaked with the release of Exposé, Spaces and later their integration on Mission Control (initially bad but now they seem better).\n
        \n
        If you do create a 1:1 copy of macOS desktop experience (and keep it updates) as a new DE you’ll most likely become very popular in no time. It doesn’t need themes, customization and all the personalization that would make it really hard to create, just a simply pixel perfect copy of macOS.
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 4
      +score: 0
      +lastActive: DateTime @1700263915 {#4311
        date: 2023-11-18 00:31:55.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4318 …}
      +nested: Doctrine\ORM\PersistentCollection {#4320 …}
      +votes: Doctrine\ORM\PersistentCollection {#4322 …}
      +reports: Doctrine\ORM\PersistentCollection {#4324 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4326 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4328 …}
      -id: 125250
      -bodyTs: "'1':255,256 'activ':152 'also':179 'amaz':45 'appl':57,114,212 'approach':63 'aren':194 'aspect':122 'bad':168,244 'becom':274 'better':25,249 'chang':214 'come':203 'compositor':20 'consid':66 'control':242 'copi':56,88,190,257,303 'could':35 'creat':17,67,141,253,297 'creator':12 'custom':285 'de':69,269 'default':155 'design':104,205 'desktop':26,147,199,260 'develop':37 'doesn':73,281 'end':135 'entir':30 'etc':156 'ever':36 'everyth':133 'exampl':19,51 'excel':119 'experi':27,200,261 'exposé':234 'extens':118 'fail':101,166 'follow':54 'fuck':44,137 'fund':43 'furthermor':123 'gnome':33,94,129 'go':149 'got':5 'group':184 'hard':295 'howev':158 'icon':148 'infinit':40 'initi':243 'integr':239 'item':109,174 'kde':31,96,157 'keep':263 'know':47 'lack':145 'last':61 'later':237 'let':1 'like':23,143,273 'linux':71 'll':271 'look':22 'louvr':14 'maco':90,208,259,305 'make':292 'manag':15 'mission':241 'monterey':209 'need':283 'new':268 'op':10 'opinion':126 'peak':206,229 'perfect':87,302 'person':125,289 'pixel':62,86,301 'pixel-perfect':85 'polish':222 'popular':276 'princip':105 'problem':92 'proport':108,172 'realli':167,294 'reinvent':132 'releas':232 'right':7,163 'say':186 'see':2 'seem':248 'serious':53 'set':217 'shame':181 'simpl':83,103 'simpli':300 'situat':142 'space':110,175,235 'still':220 'stuff':162 'style':192 'taskbar':177 'team':34 'term':170,225 'theme':76,284 'thing':138 'time':279 'tri':130 'tweak':80 'updat':265 'usabl':227 'user':79 'view':153 'want':188 'well':198 'whatnot':112 'window':191 'wisdom':41 'would':291"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemmy.world/comment/5315293"
      +editedAt: DateTimeImmutable @1700250907 {#4312
        date: 2023-11-17 20:55:07.0 +01:00
      }
      +createdAt: DateTimeImmutable @1700000189 {#4313
        date: 2023-11-14 23:16:29.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4317}
    +body: "Thanks! While I may have nailed server-side decorations in that example, as you know, there is too much other stuff to take into account to make a DE actually functional. So, I respect a lot what KDE and GNOME do and the innovations they make. I actually want to create a macOS clone, hahaha. That is one of the reasons I started this project. I will soon continue working on a library for exposing global menus in Wayland/X11. Qt allows defining a custom platform plugin, enabling us to plug external systems for managing global menus. Sadly, I think GTK4 no longer supports that, so I believe an approach would be to display a standard menu with basic functions for apps that don’t support it."
    +lang: "en"
    +isAdult: false
    +favouriteCount: 8
    +score: 0
    +lastActive: DateTime @1700001847 {#4877
      date: 2023-11-14 23:44:07.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@TCB13@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4880 …}
    +nested: Doctrine\ORM\PersistentCollection {#4882 …}
    +votes: Doctrine\ORM\PersistentCollection {#4884 …}
    +reports: Doctrine\ORM\PersistentCollection {#4886 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4888 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4890 …}
    -id: 125375
    -bodyTs: "'account':26 'actual':31,49 'allow':82 'app':122 'approach':110 'basic':119 'believ':108 'clone':55 'continu':70 'creat':52 'custom':85 'de':30 'decor':10 'defin':83 'display':114 'enabl':88 'exampl':13 'expos':76 'extern':92 'function':32,120 'global':77,96 'gnome':41 'gtk4':101 'hahaha':56 'innov':45 'kde':39 'know':16 'librari':74 'longer':103 'lot':37 'maco':54 'make':28,47 'manag':95 'may':4 'menu':117 'menus':78,97 'much':20 'nail':6 'one':59 'platform':86 'plug':91 'plugin':87 'project':66 'qt':81 'reason':62 'respect':35 'sad':98 'server':8 'server-sid':7 'side':9 'soon':69 'standard':116 'start':64 'stuff':22 'support':104,126 'system':93 'take':24 'thank':1 'think':100 'us':89 'want':50 'wayland/x11':80 'work':71 'would':111"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.world/comment/5315925"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700001847 {#4878
      date: 2023-11-14 23:44:07.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4317}
  +body: """
    Ohh, that’s cool. How far do you want to go with this? I had the idea of using a custom wayland protocol to make per-app global menus instead of per-window so you can have an app open without any windows, like on macOS, in the compositor I wanted to write. However writing a compositor using wlroots is still incredibly difficult if you have no prior experience so the whole thing didn’t get very far yet. If that’s something you want to do too, I’d be very interested in this.\n
    \n
    (Speaking of, why did you decide not to build this on top of wlroots?)
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 2
  +score: 0
  +lastActive: DateTime @1700006447 {#5021
    date: 2023-11-15 01:00:47.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@TCB13@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#5025 …}
  +nested: Doctrine\ORM\PersistentCollection {#5027 …}
  +votes: Doctrine\ORM\PersistentCollection {#5029 …}
  +reports: Doctrine\ORM\PersistentCollection {#5031 …}
  +favourites: Doctrine\ORM\PersistentCollection {#5033 …}
  +notifications: Doctrine\ORM\PersistentCollection {#5035 …}
  -id: 125596
  -bodyTs: "'app':28,41 'build':106 'compositor':51,59 'cool':4 'custom':21 'd':92 'decid':103 'didn':76 'difficult':65 'experi':71 'far':6,80 'get':78 'global':29 'go':11 'howev':56 'idea':17 'incred':64 'instead':31 'interest':95 'like':46 'maco':48 'make':25 'menus':30 'ohh':1 'open':42 'per':27,34 'per-app':26 'per-window':33 'prior':70 'protocol':23 'someth':85 'speak':98 'still':63 'thing':75 'top':109 'use':19,60 'want':9,53,87 'wayland':22 'whole':74 'window':35,45 'without':43 'wlroot':61,111 'write':55,57 'yet':81"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://discuss.tchncs.de/comment/4863983"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700006447 {#5022
    date: 2023-11-15 01:00:47.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
59 DENIED edit
App\Entity\EntryComment {#5023
  +user: Proxies\__CG__\App\Entity\User {#5024 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4879
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#4317
      +user: App\Entity\User {#4330 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: null
      +root: null
      +body: """
        Lets see if I got this right, you (the OP), the creator of Louvre, managed to create an example compositor that looks like a better desktop experience than the entire KDE and GNOME teams could ever develop with their infinite wisdom and funding? Fucking amazing. :)\n
        \n
        I know this is an example, but seriously following the “copy apple down to the last pixel” approach you should consider creating a DE for Linux that doesn’t have themes or any user tweaks, just a simple and pixel-perfect copy of macOS. The problem with GNOME and KDE is that they both fail in simple design principals such as proportions, item spacing and whatnot while Apple, and you by extension, excels in that aspect.\n
        \n
        Furthermore my personal opinion is that GNOME tries to reinvent everything and ends up fucking things up and creating situations like the lack of desktop icons going into the activities view by default etc. KDE however does some other stuff right but they fail really badly in terms of proportions and item spacing. Their taskbar is also a shame, for a group that says they want to copy Windows’ style they aren’t doing that well.\n
        \n
        Desktop experiences when it comes to design peaked with macOS Monterey (after that Apple did changes to the settings that are still not polished) and in terms of usability they peaked with the release of Exposé, Spaces and later their integration on Mission Control (initially bad but now they seem better).\n
        \n
        If you do create a 1:1 copy of macOS desktop experience (and keep it updates) as a new DE you’ll most likely become very popular in no time. It doesn’t need themes, customization and all the personalization that would make it really hard to create, just a simply pixel perfect copy of macOS.
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 4
      +score: 0
      +lastActive: DateTime @1700263915 {#4311
        date: 2023-11-18 00:31:55.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4318 …}
      +nested: Doctrine\ORM\PersistentCollection {#4320 …}
      +votes: Doctrine\ORM\PersistentCollection {#4322 …}
      +reports: Doctrine\ORM\PersistentCollection {#4324 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4326 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4328 …}
      -id: 125250
      -bodyTs: "'1':255,256 'activ':152 'also':179 'amaz':45 'appl':57,114,212 'approach':63 'aren':194 'aspect':122 'bad':168,244 'becom':274 'better':25,249 'chang':214 'come':203 'compositor':20 'consid':66 'control':242 'copi':56,88,190,257,303 'could':35 'creat':17,67,141,253,297 'creator':12 'custom':285 'de':69,269 'default':155 'design':104,205 'desktop':26,147,199,260 'develop':37 'doesn':73,281 'end':135 'entir':30 'etc':156 'ever':36 'everyth':133 'exampl':19,51 'excel':119 'experi':27,200,261 'exposé':234 'extens':118 'fail':101,166 'follow':54 'fuck':44,137 'fund':43 'furthermor':123 'gnome':33,94,129 'go':149 'got':5 'group':184 'hard':295 'howev':158 'icon':148 'infinit':40 'initi':243 'integr':239 'item':109,174 'kde':31,96,157 'keep':263 'know':47 'lack':145 'last':61 'later':237 'let':1 'like':23,143,273 'linux':71 'll':271 'look':22 'louvr':14 'maco':90,208,259,305 'make':292 'manag':15 'mission':241 'monterey':209 'need':283 'new':268 'op':10 'opinion':126 'peak':206,229 'perfect':87,302 'person':125,289 'pixel':62,86,301 'pixel-perfect':85 'polish':222 'popular':276 'princip':105 'problem':92 'proport':108,172 'realli':167,294 'reinvent':132 'releas':232 'right':7,163 'say':186 'see':2 'seem':248 'serious':53 'set':217 'shame':181 'simpl':83,103 'simpli':300 'situat':142 'space':110,175,235 'still':220 'stuff':162 'style':192 'taskbar':177 'team':34 'term':170,225 'theme':76,284 'thing':138 'time':279 'tri':130 'tweak':80 'updat':265 'usabl':227 'user':79 'view':153 'want':188 'well':198 'whatnot':112 'window':191 'wisdom':41 'would':291"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemmy.world/comment/5315293"
      +editedAt: DateTimeImmutable @1700250907 {#4312
        date: 2023-11-17 20:55:07.0 +01:00
      }
      +createdAt: DateTimeImmutable @1700000189 {#4313
        date: 2023-11-14 23:16:29.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4317}
    +body: "Thanks! While I may have nailed server-side decorations in that example, as you know, there is too much other stuff to take into account to make a DE actually functional. So, I respect a lot what KDE and GNOME do and the innovations they make. I actually want to create a macOS clone, hahaha. That is one of the reasons I started this project. I will soon continue working on a library for exposing global menus in Wayland/X11. Qt allows defining a custom platform plugin, enabling us to plug external systems for managing global menus. Sadly, I think GTK4 no longer supports that, so I believe an approach would be to display a standard menu with basic functions for apps that don’t support it."
    +lang: "en"
    +isAdult: false
    +favouriteCount: 8
    +score: 0
    +lastActive: DateTime @1700001847 {#4877
      date: 2023-11-14 23:44:07.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@TCB13@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4880 …}
    +nested: Doctrine\ORM\PersistentCollection {#4882 …}
    +votes: Doctrine\ORM\PersistentCollection {#4884 …}
    +reports: Doctrine\ORM\PersistentCollection {#4886 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4888 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4890 …}
    -id: 125375
    -bodyTs: "'account':26 'actual':31,49 'allow':82 'app':122 'approach':110 'basic':119 'believ':108 'clone':55 'continu':70 'creat':52 'custom':85 'de':30 'decor':10 'defin':83 'display':114 'enabl':88 'exampl':13 'expos':76 'extern':92 'function':32,120 'global':77,96 'gnome':41 'gtk4':101 'hahaha':56 'innov':45 'kde':39 'know':16 'librari':74 'longer':103 'lot':37 'maco':54 'make':28,47 'manag':95 'may':4 'menu':117 'menus':78,97 'much':20 'nail':6 'one':59 'platform':86 'plug':91 'plugin':87 'project':66 'qt':81 'reason':62 'respect':35 'sad':98 'server':8 'server-sid':7 'side':9 'soon':69 'standard':116 'start':64 'stuff':22 'support':104,126 'system':93 'take':24 'thank':1 'think':100 'us':89 'want':50 'wayland/x11':80 'work':71 'would':111"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.world/comment/5315925"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700001847 {#4878
      date: 2023-11-14 23:44:07.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4317}
  +body: """
    Ohh, that’s cool. How far do you want to go with this? I had the idea of using a custom wayland protocol to make per-app global menus instead of per-window so you can have an app open without any windows, like on macOS, in the compositor I wanted to write. However writing a compositor using wlroots is still incredibly difficult if you have no prior experience so the whole thing didn’t get very far yet. If that’s something you want to do too, I’d be very interested in this.\n
    \n
    (Speaking of, why did you decide not to build this on top of wlroots?)
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 2
  +score: 0
  +lastActive: DateTime @1700006447 {#5021
    date: 2023-11-15 01:00:47.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@TCB13@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#5025 …}
  +nested: Doctrine\ORM\PersistentCollection {#5027 …}
  +votes: Doctrine\ORM\PersistentCollection {#5029 …}
  +reports: Doctrine\ORM\PersistentCollection {#5031 …}
  +favourites: Doctrine\ORM\PersistentCollection {#5033 …}
  +notifications: Doctrine\ORM\PersistentCollection {#5035 …}
  -id: 125596
  -bodyTs: "'app':28,41 'build':106 'compositor':51,59 'cool':4 'custom':21 'd':92 'decid':103 'didn':76 'difficult':65 'experi':71 'far':6,80 'get':78 'global':29 'go':11 'howev':56 'idea':17 'incred':64 'instead':31 'interest':95 'like':46 'maco':48 'make':25 'menus':30 'ohh':1 'open':42 'per':27,34 'per-app':26 'per-window':33 'prior':70 'protocol':23 'someth':85 'speak':98 'still':63 'thing':75 'top':109 'use':19,60 'want':9,53,87 'wayland':22 'whole':74 'window':35,45 'without':43 'wlroot':61,111 'write':55,57 'yet':81"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://discuss.tchncs.de/comment/4863983"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700006447 {#5022
    date: 2023-11-15 01:00:47.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
60 DENIED moderate
App\Entity\EntryComment {#5023
  +user: Proxies\__CG__\App\Entity\User {#5024 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4879
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#4317
      +user: App\Entity\User {#4330 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: null
      +root: null
      +body: """
        Lets see if I got this right, you (the OP), the creator of Louvre, managed to create an example compositor that looks like a better desktop experience than the entire KDE and GNOME teams could ever develop with their infinite wisdom and funding? Fucking amazing. :)\n
        \n
        I know this is an example, but seriously following the “copy apple down to the last pixel” approach you should consider creating a DE for Linux that doesn’t have themes or any user tweaks, just a simple and pixel-perfect copy of macOS. The problem with GNOME and KDE is that they both fail in simple design principals such as proportions, item spacing and whatnot while Apple, and you by extension, excels in that aspect.\n
        \n
        Furthermore my personal opinion is that GNOME tries to reinvent everything and ends up fucking things up and creating situations like the lack of desktop icons going into the activities view by default etc. KDE however does some other stuff right but they fail really badly in terms of proportions and item spacing. Their taskbar is also a shame, for a group that says they want to copy Windows’ style they aren’t doing that well.\n
        \n
        Desktop experiences when it comes to design peaked with macOS Monterey (after that Apple did changes to the settings that are still not polished) and in terms of usability they peaked with the release of Exposé, Spaces and later their integration on Mission Control (initially bad but now they seem better).\n
        \n
        If you do create a 1:1 copy of macOS desktop experience (and keep it updates) as a new DE you’ll most likely become very popular in no time. It doesn’t need themes, customization and all the personalization that would make it really hard to create, just a simply pixel perfect copy of macOS.
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 4
      +score: 0
      +lastActive: DateTime @1700263915 {#4311
        date: 2023-11-18 00:31:55.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4318 …}
      +nested: Doctrine\ORM\PersistentCollection {#4320 …}
      +votes: Doctrine\ORM\PersistentCollection {#4322 …}
      +reports: Doctrine\ORM\PersistentCollection {#4324 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4326 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4328 …}
      -id: 125250
      -bodyTs: "'1':255,256 'activ':152 'also':179 'amaz':45 'appl':57,114,212 'approach':63 'aren':194 'aspect':122 'bad':168,244 'becom':274 'better':25,249 'chang':214 'come':203 'compositor':20 'consid':66 'control':242 'copi':56,88,190,257,303 'could':35 'creat':17,67,141,253,297 'creator':12 'custom':285 'de':69,269 'default':155 'design':104,205 'desktop':26,147,199,260 'develop':37 'doesn':73,281 'end':135 'entir':30 'etc':156 'ever':36 'everyth':133 'exampl':19,51 'excel':119 'experi':27,200,261 'exposé':234 'extens':118 'fail':101,166 'follow':54 'fuck':44,137 'fund':43 'furthermor':123 'gnome':33,94,129 'go':149 'got':5 'group':184 'hard':295 'howev':158 'icon':148 'infinit':40 'initi':243 'integr':239 'item':109,174 'kde':31,96,157 'keep':263 'know':47 'lack':145 'last':61 'later':237 'let':1 'like':23,143,273 'linux':71 'll':271 'look':22 'louvr':14 'maco':90,208,259,305 'make':292 'manag':15 'mission':241 'monterey':209 'need':283 'new':268 'op':10 'opinion':126 'peak':206,229 'perfect':87,302 'person':125,289 'pixel':62,86,301 'pixel-perfect':85 'polish':222 'popular':276 'princip':105 'problem':92 'proport':108,172 'realli':167,294 'reinvent':132 'releas':232 'right':7,163 'say':186 'see':2 'seem':248 'serious':53 'set':217 'shame':181 'simpl':83,103 'simpli':300 'situat':142 'space':110,175,235 'still':220 'stuff':162 'style':192 'taskbar':177 'team':34 'term':170,225 'theme':76,284 'thing':138 'time':279 'tri':130 'tweak':80 'updat':265 'usabl':227 'user':79 'view':153 'want':188 'well':198 'whatnot':112 'window':191 'wisdom':41 'would':291"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemmy.world/comment/5315293"
      +editedAt: DateTimeImmutable @1700250907 {#4312
        date: 2023-11-17 20:55:07.0 +01:00
      }
      +createdAt: DateTimeImmutable @1700000189 {#4313
        date: 2023-11-14 23:16:29.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4317}
    +body: "Thanks! While I may have nailed server-side decorations in that example, as you know, there is too much other stuff to take into account to make a DE actually functional. So, I respect a lot what KDE and GNOME do and the innovations they make. I actually want to create a macOS clone, hahaha. That is one of the reasons I started this project. I will soon continue working on a library for exposing global menus in Wayland/X11. Qt allows defining a custom platform plugin, enabling us to plug external systems for managing global menus. Sadly, I think GTK4 no longer supports that, so I believe an approach would be to display a standard menu with basic functions for apps that don’t support it."
    +lang: "en"
    +isAdult: false
    +favouriteCount: 8
    +score: 0
    +lastActive: DateTime @1700001847 {#4877
      date: 2023-11-14 23:44:07.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@TCB13@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4880 …}
    +nested: Doctrine\ORM\PersistentCollection {#4882 …}
    +votes: Doctrine\ORM\PersistentCollection {#4884 …}
    +reports: Doctrine\ORM\PersistentCollection {#4886 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4888 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4890 …}
    -id: 125375
    -bodyTs: "'account':26 'actual':31,49 'allow':82 'app':122 'approach':110 'basic':119 'believ':108 'clone':55 'continu':70 'creat':52 'custom':85 'de':30 'decor':10 'defin':83 'display':114 'enabl':88 'exampl':13 'expos':76 'extern':92 'function':32,120 'global':77,96 'gnome':41 'gtk4':101 'hahaha':56 'innov':45 'kde':39 'know':16 'librari':74 'longer':103 'lot':37 'maco':54 'make':28,47 'manag':95 'may':4 'menu':117 'menus':78,97 'much':20 'nail':6 'one':59 'platform':86 'plug':91 'plugin':87 'project':66 'qt':81 'reason':62 'respect':35 'sad':98 'server':8 'server-sid':7 'side':9 'soon':69 'standard':116 'start':64 'stuff':22 'support':104,126 'system':93 'take':24 'thank':1 'think':100 'us':89 'want':50 'wayland/x11':80 'work':71 'would':111"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.world/comment/5315925"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700001847 {#4878
      date: 2023-11-14 23:44:07.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4317}
  +body: """
    Ohh, that’s cool. How far do you want to go with this? I had the idea of using a custom wayland protocol to make per-app global menus instead of per-window so you can have an app open without any windows, like on macOS, in the compositor I wanted to write. However writing a compositor using wlroots is still incredibly difficult if you have no prior experience so the whole thing didn’t get very far yet. If that’s something you want to do too, I’d be very interested in this.\n
    \n
    (Speaking of, why did you decide not to build this on top of wlroots?)
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 2
  +score: 0
  +lastActive: DateTime @1700006447 {#5021
    date: 2023-11-15 01:00:47.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@TCB13@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#5025 …}
  +nested: Doctrine\ORM\PersistentCollection {#5027 …}
  +votes: Doctrine\ORM\PersistentCollection {#5029 …}
  +reports: Doctrine\ORM\PersistentCollection {#5031 …}
  +favourites: Doctrine\ORM\PersistentCollection {#5033 …}
  +notifications: Doctrine\ORM\PersistentCollection {#5035 …}
  -id: 125596
  -bodyTs: "'app':28,41 'build':106 'compositor':51,59 'cool':4 'custom':21 'd':92 'decid':103 'didn':76 'difficult':65 'experi':71 'far':6,80 'get':78 'global':29 'go':11 'howev':56 'idea':17 'incred':64 'instead':31 'interest':95 'like':46 'maco':48 'make':25 'menus':30 'ohh':1 'open':42 'per':27,34 'per-app':26 'per-window':33 'prior':70 'protocol':23 'someth':85 'speak':98 'still':63 'thing':75 'top':109 'use':19,60 'want':9,53,87 'wayland':22 'whole':74 'window':35,45 'without':43 'wlroot':61,111 'write':55,57 'yet':81"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://discuss.tchncs.de/comment/4863983"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700006447 {#5022
    date: 2023-11-15 01:00:47.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
61 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
62 DENIED moderate
App\Entity\EntryComment {#5092
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#5023
    +user: Proxies\__CG__\App\Entity\User {#5024 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#4879
      +user: Proxies\__CG__\App\Entity\User {#1970 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: App\Entity\EntryComment {#4317
        +user: App\Entity\User {#4330 …}
        +entry: App\Entity\Entry {#2419}
        +magazine: App\Entity\Magazine {#265}
        +image: null
        +parent: null
        +root: null
        +body: """
          Lets see if I got this right, you (the OP), the creator of Louvre, managed to create an example compositor that looks like a better desktop experience than the entire KDE and GNOME teams could ever develop with their infinite wisdom and funding? Fucking amazing. :)\n
          \n
          I know this is an example, but seriously following the “copy apple down to the last pixel” approach you should consider creating a DE for Linux that doesn’t have themes or any user tweaks, just a simple and pixel-perfect copy of macOS. The problem with GNOME and KDE is that they both fail in simple design principals such as proportions, item spacing and whatnot while Apple, and you by extension, excels in that aspect.\n
          \n
          Furthermore my personal opinion is that GNOME tries to reinvent everything and ends up fucking things up and creating situations like the lack of desktop icons going into the activities view by default etc. KDE however does some other stuff right but they fail really badly in terms of proportions and item spacing. Their taskbar is also a shame, for a group that says they want to copy Windows’ style they aren’t doing that well.\n
          \n
          Desktop experiences when it comes to design peaked with macOS Monterey (after that Apple did changes to the settings that are still not polished) and in terms of usability they peaked with the release of Exposé, Spaces and later their integration on Mission Control (initially bad but now they seem better).\n
          \n
          If you do create a 1:1 copy of macOS desktop experience (and keep it updates) as a new DE you’ll most likely become very popular in no time. It doesn’t need themes, customization and all the personalization that would make it really hard to create, just a simply pixel perfect copy of macOS.
          """
        +lang: "en"
        +isAdult: false
        +favouriteCount: 4
        +score: 0
        +lastActive: DateTime @1700263915 {#4311
          date: 2023-11-18 00:31:55.0 +01:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@ehopperdietzel@lemmy.world"
        ]
        +children: Doctrine\ORM\PersistentCollection {#4318 …}
        +nested: Doctrine\ORM\PersistentCollection {#4320 …}
        +votes: Doctrine\ORM\PersistentCollection {#4322 …}
        +reports: Doctrine\ORM\PersistentCollection {#4324 …}
        +favourites: Doctrine\ORM\PersistentCollection {#4326 …}
        +notifications: Doctrine\ORM\PersistentCollection {#4328 …}
        -id: 125250
        -bodyTs: "'1':255,256 'activ':152 'also':179 'amaz':45 'appl':57,114,212 'approach':63 'aren':194 'aspect':122 'bad':168,244 'becom':274 'better':25,249 'chang':214 'come':203 'compositor':20 'consid':66 'control':242 'copi':56,88,190,257,303 'could':35 'creat':17,67,141,253,297 'creator':12 'custom':285 'de':69,269 'default':155 'design':104,205 'desktop':26,147,199,260 'develop':37 'doesn':73,281 'end':135 'entir':30 'etc':156 'ever':36 'everyth':133 'exampl':19,51 'excel':119 'experi':27,200,261 'exposé':234 'extens':118 'fail':101,166 'follow':54 'fuck':44,137 'fund':43 'furthermor':123 'gnome':33,94,129 'go':149 'got':5 'group':184 'hard':295 'howev':158 'icon':148 'infinit':40 'initi':243 'integr':239 'item':109,174 'kde':31,96,157 'keep':263 'know':47 'lack':145 'last':61 'later':237 'let':1 'like':23,143,273 'linux':71 'll':271 'look':22 'louvr':14 'maco':90,208,259,305 'make':292 'manag':15 'mission':241 'monterey':209 'need':283 'new':268 'op':10 'opinion':126 'peak':206,229 'perfect':87,302 'person':125,289 'pixel':62,86,301 'pixel-perfect':85 'polish':222 'popular':276 'princip':105 'problem':92 'proport':108,172 'realli':167,294 'reinvent':132 'releas':232 'right':7,163 'say':186 'see':2 'seem':248 'serious':53 'set':217 'shame':181 'simpl':83,103 'simpli':300 'situat':142 'space':110,175,235 'still':220 'stuff':162 'style':192 'taskbar':177 'team':34 'term':170,225 'theme':76,284 'thing':138 'time':279 'tri':130 'tweak':80 'updat':265 'usabl':227 'user':79 'view':153 'want':188 'well':198 'whatnot':112 'window':191 'wisdom':41 'would':291"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.world/comment/5315293"
        +editedAt: DateTimeImmutable @1700250907 {#4312
          date: 2023-11-17 20:55:07.0 +01:00
        }
        +createdAt: DateTimeImmutable @1700000189 {#4313
          date: 2023-11-14 23:16:29.0 +01:00
        }
      }
      +root: App\Entity\EntryComment {#4317}
      +body: "Thanks! While I may have nailed server-side decorations in that example, as you know, there is too much other stuff to take into account to make a DE actually functional. So, I respect a lot what KDE and GNOME do and the innovations they make. I actually want to create a macOS clone, hahaha. That is one of the reasons I started this project. I will soon continue working on a library for exposing global menus in Wayland/X11. Qt allows defining a custom platform plugin, enabling us to plug external systems for managing global menus. Sadly, I think GTK4 no longer supports that, so I believe an approach would be to display a standard menu with basic functions for apps that don’t support it."
      +lang: "en"
      +isAdult: false
      +favouriteCount: 8
      +score: 0
      +lastActive: DateTime @1700001847 {#4877
        date: 2023-11-14 23:44:07.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
        "@TCB13@lemmy.world"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4880 …}
      +nested: Doctrine\ORM\PersistentCollection {#4882 …}
      +votes: Doctrine\ORM\PersistentCollection {#4884 …}
      +reports: Doctrine\ORM\PersistentCollection {#4886 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4888 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4890 …}
      -id: 125375
      -bodyTs: "'account':26 'actual':31,49 'allow':82 'app':122 'approach':110 'basic':119 'believ':108 'clone':55 'continu':70 'creat':52 'custom':85 'de':30 'decor':10 'defin':83 'display':114 'enabl':88 'exampl':13 'expos':76 'extern':92 'function':32,120 'global':77,96 'gnome':41 'gtk4':101 'hahaha':56 'innov':45 'kde':39 'know':16 'librari':74 'longer':103 'lot':37 'maco':54 'make':28,47 'manag':95 'may':4 'menu':117 'menus':78,97 'much':20 'nail':6 'one':59 'platform':86 'plug':91 'plugin':87 'project':66 'qt':81 'reason':62 'respect':35 'sad':98 'server':8 'server-sid':7 'side':9 'soon':69 'standard':116 'start':64 'stuff':22 'support':104,126 'system':93 'take':24 'thank':1 'think':100 'us':89 'want':50 'wayland/x11':80 'work':71 'would':111"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemmy.world/comment/5315925"
      +editedAt: null
      +createdAt: DateTimeImmutable @1700001847 {#4878
        date: 2023-11-14 23:44:07.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4317}
    +body: """
      Ohh, that’s cool. How far do you want to go with this? I had the idea of using a custom wayland protocol to make per-app global menus instead of per-window so you can have an app open without any windows, like on macOS, in the compositor I wanted to write. However writing a compositor using wlroots is still incredibly difficult if you have no prior experience so the whole thing didn’t get very far yet. If that’s something you want to do too, I’d be very interested in this.\n
      \n
      (Speaking of, why did you decide not to build this on top of wlroots?)
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 2
    +score: 0
    +lastActive: DateTime @1700006447 {#5021
      date: 2023-11-15 01:00:47.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@TCB13@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#5025 …}
    +nested: Doctrine\ORM\PersistentCollection {#5027 …}
    +votes: Doctrine\ORM\PersistentCollection {#5029 …}
    +reports: Doctrine\ORM\PersistentCollection {#5031 …}
    +favourites: Doctrine\ORM\PersistentCollection {#5033 …}
    +notifications: Doctrine\ORM\PersistentCollection {#5035 …}
    -id: 125596
    -bodyTs: "'app':28,41 'build':106 'compositor':51,59 'cool':4 'custom':21 'd':92 'decid':103 'didn':76 'difficult':65 'experi':71 'far':6,80 'get':78 'global':29 'go':11 'howev':56 'idea':17 'incred':64 'instead':31 'interest':95 'like':46 'maco':48 'make':25 'menus':30 'ohh':1 'open':42 'per':27,34 'per-app':26 'per-window':33 'prior':70 'protocol':23 'someth':85 'speak':98 'still':63 'thing':75 'top':109 'use':19,60 'want':9,53,87 'wayland':22 'whole':74 'window':35,45 'without':43 'wlroot':61,111 'write':55,57 'yet':81"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://discuss.tchncs.de/comment/4863983"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700006447 {#5022
      date: 2023-11-15 01:00:47.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4317}
  +body: """
    I actually already created a library for that called Heaven ([github.com/CuarzoSoftware/Heaven](https://github.com/CuarzoSoftware/Heaven)), but I want to rewrite it to make it simpler and add backends for different IPC mechanisms (Unix domain sockets and D-Bus).\n
    \n
    It allows apps to create as many menu bars as they want. The idea is that when one of its toplevel windows is activated, it can notify the “topbar app” to display a specific menu bar. The compositor also informs the “topbar app” about the currently active client. So, it has three APIs: one for apps, another for the “topbar app,” and another for the compositor. Apps are identified by their PID.\n
    \n
    Now, with respect to the second question, a long time ago, I tried to create a compositor using QtWayland, which had the most documentation at that time. However, it had some problems with certain interfaces that made the compositor crash. So, I then looked for wlroots but could find no documentation whatsoever, so I decided to start from scratch. As time passed, I began to learn and understand how protocols work, realizing that one of the most challenging things was implementing protocols correctly, as there are too many interfaces that depend on each other, and you need to implement them all before you can see results and validate that it works. That’s why I decided to create this lib, even as my university thesis, with the focus of offering a default and basic implementation of each protocol so that developers can see a functional compositor from the start and then gradually and specifically override whatever they need, being able to validate each feature they add immediately. Of course, there are many other complicated things I had to learn, such as the DRM/KMS API, buffer sharing through DMA, among other stuff. I really appreciate wlroots, though. I learned a lot by analyzing its source code, and surely today I would be able to create a compositor with it, hahaha.
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 5
  +score: 0
  +lastActive: DateTime @1700008040 {#5090
    date: 2023-11-15 01:27:20.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@TCB13@lemmy.world"
    "@2xsaiko@discuss.tchncs.de"
  ]
  +children: Doctrine\ORM\PersistentCollection {#5093 …}
  +nested: Doctrine\ORM\PersistentCollection {#5095 …}
  +votes: Doctrine\ORM\PersistentCollection {#5097 …}
  +reports: Doctrine\ORM\PersistentCollection {#5099 …}
  +favourites: Doctrine\ORM\PersistentCollection {#5101 …}
  +notifications: Doctrine\ORM\PersistentCollection {#5103 …}
  -id: 125648
  -bodyTs: "'/cuarzosoftware/heaven](https://github.com/cuarzosoftware/heaven)),':13 'abl':269,321 'activ':61,84 'actual':2 'add':25,275 'ago':120 'allow':39 'alreadi':3 'also':76 'among':298 'analyz':311 'anoth':94,100 'api':90,293 'app':40,67,80,93,98,104 'appreci':303 'backend':26 'bar':46,73 'basic':243 'began':173 'buffer':294 'bus':37 'call':9 'certain':143 'challeng':187 'client':85 'code':314 'complic':283 'compositor':75,103,126,148,255,325 'correct':192 'could':157 'cours':278 'crash':149 'creat':4,42,124,227,323 'current':83 'd':36 'd-bus':35 'decid':164,225 'default':241 'depend':200 'develop':250 'differ':28 'display':69 'dma':297 'document':133,160 'domain':32 'drm/kms':292 'even':230 'featur':273 'find':158 'focus':237 'function':254 'github.com':12 'github.com/cuarzosoftware/heaven](https://github.com/cuarzosoftware/heaven)),':11 'gradual':261 'hahaha':328 'heaven':10 'howev':137 'idea':51 'identifi':106 'immedi':276 'implement':190,208,244 'inform':77 'interfac':144,198 'ipc':29 'learn':175,288,307 'lib':229 'librari':6 'long':118 'look':153 'lot':309 'made':146 'make':21 'mani':44,197,281 'mechan':30 'menu':45,72 'need':206,267 'notifi':64 'offer':239 'one':55,91,183 'overrid':264 'pass':171 'pid':109 'problem':141 'protocol':179,191,247 'qtwayland':128 'question':116 'realiz':181 'realli':302 'respect':112 'result':215 'rewrit':18 'scratch':168 'second':115 'see':214,252 'share':295 'simpler':23 'socket':33 'sourc':313 'specif':71,263 'start':166,258 'stuff':300 'sure':316 'thesi':234 'thing':188,284 'though':305 'three':89 'time':119,136,170 'today':317 'topbar':66,79,97 'toplevel':58 'tri':122 'understand':177 'univers':233 'unix':31 'use':127 'valid':217,271 'want':16,49 'whatev':265 'whatsoev':161 'window':59 'wlroot':155,304 'work':180,220 'would':319"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5318533"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700008040 {#5091
    date: 2023-11-15 01:27:20.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
63 DENIED edit
App\Entity\EntryComment {#5092
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#5023
    +user: Proxies\__CG__\App\Entity\User {#5024 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#4879
      +user: Proxies\__CG__\App\Entity\User {#1970 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: App\Entity\EntryComment {#4317
        +user: App\Entity\User {#4330 …}
        +entry: App\Entity\Entry {#2419}
        +magazine: App\Entity\Magazine {#265}
        +image: null
        +parent: null
        +root: null
        +body: """
          Lets see if I got this right, you (the OP), the creator of Louvre, managed to create an example compositor that looks like a better desktop experience than the entire KDE and GNOME teams could ever develop with their infinite wisdom and funding? Fucking amazing. :)\n
          \n
          I know this is an example, but seriously following the “copy apple down to the last pixel” approach you should consider creating a DE for Linux that doesn’t have themes or any user tweaks, just a simple and pixel-perfect copy of macOS. The problem with GNOME and KDE is that they both fail in simple design principals such as proportions, item spacing and whatnot while Apple, and you by extension, excels in that aspect.\n
          \n
          Furthermore my personal opinion is that GNOME tries to reinvent everything and ends up fucking things up and creating situations like the lack of desktop icons going into the activities view by default etc. KDE however does some other stuff right but they fail really badly in terms of proportions and item spacing. Their taskbar is also a shame, for a group that says they want to copy Windows’ style they aren’t doing that well.\n
          \n
          Desktop experiences when it comes to design peaked with macOS Monterey (after that Apple did changes to the settings that are still not polished) and in terms of usability they peaked with the release of Exposé, Spaces and later their integration on Mission Control (initially bad but now they seem better).\n
          \n
          If you do create a 1:1 copy of macOS desktop experience (and keep it updates) as a new DE you’ll most likely become very popular in no time. It doesn’t need themes, customization and all the personalization that would make it really hard to create, just a simply pixel perfect copy of macOS.
          """
        +lang: "en"
        +isAdult: false
        +favouriteCount: 4
        +score: 0
        +lastActive: DateTime @1700263915 {#4311
          date: 2023-11-18 00:31:55.0 +01:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@ehopperdietzel@lemmy.world"
        ]
        +children: Doctrine\ORM\PersistentCollection {#4318 …}
        +nested: Doctrine\ORM\PersistentCollection {#4320 …}
        +votes: Doctrine\ORM\PersistentCollection {#4322 …}
        +reports: Doctrine\ORM\PersistentCollection {#4324 …}
        +favourites: Doctrine\ORM\PersistentCollection {#4326 …}
        +notifications: Doctrine\ORM\PersistentCollection {#4328 …}
        -id: 125250
        -bodyTs: "'1':255,256 'activ':152 'also':179 'amaz':45 'appl':57,114,212 'approach':63 'aren':194 'aspect':122 'bad':168,244 'becom':274 'better':25,249 'chang':214 'come':203 'compositor':20 'consid':66 'control':242 'copi':56,88,190,257,303 'could':35 'creat':17,67,141,253,297 'creator':12 'custom':285 'de':69,269 'default':155 'design':104,205 'desktop':26,147,199,260 'develop':37 'doesn':73,281 'end':135 'entir':30 'etc':156 'ever':36 'everyth':133 'exampl':19,51 'excel':119 'experi':27,200,261 'exposé':234 'extens':118 'fail':101,166 'follow':54 'fuck':44,137 'fund':43 'furthermor':123 'gnome':33,94,129 'go':149 'got':5 'group':184 'hard':295 'howev':158 'icon':148 'infinit':40 'initi':243 'integr':239 'item':109,174 'kde':31,96,157 'keep':263 'know':47 'lack':145 'last':61 'later':237 'let':1 'like':23,143,273 'linux':71 'll':271 'look':22 'louvr':14 'maco':90,208,259,305 'make':292 'manag':15 'mission':241 'monterey':209 'need':283 'new':268 'op':10 'opinion':126 'peak':206,229 'perfect':87,302 'person':125,289 'pixel':62,86,301 'pixel-perfect':85 'polish':222 'popular':276 'princip':105 'problem':92 'proport':108,172 'realli':167,294 'reinvent':132 'releas':232 'right':7,163 'say':186 'see':2 'seem':248 'serious':53 'set':217 'shame':181 'simpl':83,103 'simpli':300 'situat':142 'space':110,175,235 'still':220 'stuff':162 'style':192 'taskbar':177 'team':34 'term':170,225 'theme':76,284 'thing':138 'time':279 'tri':130 'tweak':80 'updat':265 'usabl':227 'user':79 'view':153 'want':188 'well':198 'whatnot':112 'window':191 'wisdom':41 'would':291"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.world/comment/5315293"
        +editedAt: DateTimeImmutable @1700250907 {#4312
          date: 2023-11-17 20:55:07.0 +01:00
        }
        +createdAt: DateTimeImmutable @1700000189 {#4313
          date: 2023-11-14 23:16:29.0 +01:00
        }
      }
      +root: App\Entity\EntryComment {#4317}
      +body: "Thanks! While I may have nailed server-side decorations in that example, as you know, there is too much other stuff to take into account to make a DE actually functional. So, I respect a lot what KDE and GNOME do and the innovations they make. I actually want to create a macOS clone, hahaha. That is one of the reasons I started this project. I will soon continue working on a library for exposing global menus in Wayland/X11. Qt allows defining a custom platform plugin, enabling us to plug external systems for managing global menus. Sadly, I think GTK4 no longer supports that, so I believe an approach would be to display a standard menu with basic functions for apps that don’t support it."
      +lang: "en"
      +isAdult: false
      +favouriteCount: 8
      +score: 0
      +lastActive: DateTime @1700001847 {#4877
        date: 2023-11-14 23:44:07.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
        "@TCB13@lemmy.world"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4880 …}
      +nested: Doctrine\ORM\PersistentCollection {#4882 …}
      +votes: Doctrine\ORM\PersistentCollection {#4884 …}
      +reports: Doctrine\ORM\PersistentCollection {#4886 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4888 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4890 …}
      -id: 125375
      -bodyTs: "'account':26 'actual':31,49 'allow':82 'app':122 'approach':110 'basic':119 'believ':108 'clone':55 'continu':70 'creat':52 'custom':85 'de':30 'decor':10 'defin':83 'display':114 'enabl':88 'exampl':13 'expos':76 'extern':92 'function':32,120 'global':77,96 'gnome':41 'gtk4':101 'hahaha':56 'innov':45 'kde':39 'know':16 'librari':74 'longer':103 'lot':37 'maco':54 'make':28,47 'manag':95 'may':4 'menu':117 'menus':78,97 'much':20 'nail':6 'one':59 'platform':86 'plug':91 'plugin':87 'project':66 'qt':81 'reason':62 'respect':35 'sad':98 'server':8 'server-sid':7 'side':9 'soon':69 'standard':116 'start':64 'stuff':22 'support':104,126 'system':93 'take':24 'thank':1 'think':100 'us':89 'want':50 'wayland/x11':80 'work':71 'would':111"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemmy.world/comment/5315925"
      +editedAt: null
      +createdAt: DateTimeImmutable @1700001847 {#4878
        date: 2023-11-14 23:44:07.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4317}
    +body: """
      Ohh, that’s cool. How far do you want to go with this? I had the idea of using a custom wayland protocol to make per-app global menus instead of per-window so you can have an app open without any windows, like on macOS, in the compositor I wanted to write. However writing a compositor using wlroots is still incredibly difficult if you have no prior experience so the whole thing didn’t get very far yet. If that’s something you want to do too, I’d be very interested in this.\n
      \n
      (Speaking of, why did you decide not to build this on top of wlroots?)
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 2
    +score: 0
    +lastActive: DateTime @1700006447 {#5021
      date: 2023-11-15 01:00:47.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@TCB13@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#5025 …}
    +nested: Doctrine\ORM\PersistentCollection {#5027 …}
    +votes: Doctrine\ORM\PersistentCollection {#5029 …}
    +reports: Doctrine\ORM\PersistentCollection {#5031 …}
    +favourites: Doctrine\ORM\PersistentCollection {#5033 …}
    +notifications: Doctrine\ORM\PersistentCollection {#5035 …}
    -id: 125596
    -bodyTs: "'app':28,41 'build':106 'compositor':51,59 'cool':4 'custom':21 'd':92 'decid':103 'didn':76 'difficult':65 'experi':71 'far':6,80 'get':78 'global':29 'go':11 'howev':56 'idea':17 'incred':64 'instead':31 'interest':95 'like':46 'maco':48 'make':25 'menus':30 'ohh':1 'open':42 'per':27,34 'per-app':26 'per-window':33 'prior':70 'protocol':23 'someth':85 'speak':98 'still':63 'thing':75 'top':109 'use':19,60 'want':9,53,87 'wayland':22 'whole':74 'window':35,45 'without':43 'wlroot':61,111 'write':55,57 'yet':81"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://discuss.tchncs.de/comment/4863983"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700006447 {#5022
      date: 2023-11-15 01:00:47.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4317}
  +body: """
    I actually already created a library for that called Heaven ([github.com/CuarzoSoftware/Heaven](https://github.com/CuarzoSoftware/Heaven)), but I want to rewrite it to make it simpler and add backends for different IPC mechanisms (Unix domain sockets and D-Bus).\n
    \n
    It allows apps to create as many menu bars as they want. The idea is that when one of its toplevel windows is activated, it can notify the “topbar app” to display a specific menu bar. The compositor also informs the “topbar app” about the currently active client. So, it has three APIs: one for apps, another for the “topbar app,” and another for the compositor. Apps are identified by their PID.\n
    \n
    Now, with respect to the second question, a long time ago, I tried to create a compositor using QtWayland, which had the most documentation at that time. However, it had some problems with certain interfaces that made the compositor crash. So, I then looked for wlroots but could find no documentation whatsoever, so I decided to start from scratch. As time passed, I began to learn and understand how protocols work, realizing that one of the most challenging things was implementing protocols correctly, as there are too many interfaces that depend on each other, and you need to implement them all before you can see results and validate that it works. That’s why I decided to create this lib, even as my university thesis, with the focus of offering a default and basic implementation of each protocol so that developers can see a functional compositor from the start and then gradually and specifically override whatever they need, being able to validate each feature they add immediately. Of course, there are many other complicated things I had to learn, such as the DRM/KMS API, buffer sharing through DMA, among other stuff. I really appreciate wlroots, though. I learned a lot by analyzing its source code, and surely today I would be able to create a compositor with it, hahaha.
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 5
  +score: 0
  +lastActive: DateTime @1700008040 {#5090
    date: 2023-11-15 01:27:20.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@TCB13@lemmy.world"
    "@2xsaiko@discuss.tchncs.de"
  ]
  +children: Doctrine\ORM\PersistentCollection {#5093 …}
  +nested: Doctrine\ORM\PersistentCollection {#5095 …}
  +votes: Doctrine\ORM\PersistentCollection {#5097 …}
  +reports: Doctrine\ORM\PersistentCollection {#5099 …}
  +favourites: Doctrine\ORM\PersistentCollection {#5101 …}
  +notifications: Doctrine\ORM\PersistentCollection {#5103 …}
  -id: 125648
  -bodyTs: "'/cuarzosoftware/heaven](https://github.com/cuarzosoftware/heaven)),':13 'abl':269,321 'activ':61,84 'actual':2 'add':25,275 'ago':120 'allow':39 'alreadi':3 'also':76 'among':298 'analyz':311 'anoth':94,100 'api':90,293 'app':40,67,80,93,98,104 'appreci':303 'backend':26 'bar':46,73 'basic':243 'began':173 'buffer':294 'bus':37 'call':9 'certain':143 'challeng':187 'client':85 'code':314 'complic':283 'compositor':75,103,126,148,255,325 'correct':192 'could':157 'cours':278 'crash':149 'creat':4,42,124,227,323 'current':83 'd':36 'd-bus':35 'decid':164,225 'default':241 'depend':200 'develop':250 'differ':28 'display':69 'dma':297 'document':133,160 'domain':32 'drm/kms':292 'even':230 'featur':273 'find':158 'focus':237 'function':254 'github.com':12 'github.com/cuarzosoftware/heaven](https://github.com/cuarzosoftware/heaven)),':11 'gradual':261 'hahaha':328 'heaven':10 'howev':137 'idea':51 'identifi':106 'immedi':276 'implement':190,208,244 'inform':77 'interfac':144,198 'ipc':29 'learn':175,288,307 'lib':229 'librari':6 'long':118 'look':153 'lot':309 'made':146 'make':21 'mani':44,197,281 'mechan':30 'menu':45,72 'need':206,267 'notifi':64 'offer':239 'one':55,91,183 'overrid':264 'pass':171 'pid':109 'problem':141 'protocol':179,191,247 'qtwayland':128 'question':116 'realiz':181 'realli':302 'respect':112 'result':215 'rewrit':18 'scratch':168 'second':115 'see':214,252 'share':295 'simpler':23 'socket':33 'sourc':313 'specif':71,263 'start':166,258 'stuff':300 'sure':316 'thesi':234 'thing':188,284 'though':305 'three':89 'time':119,136,170 'today':317 'topbar':66,79,97 'toplevel':58 'tri':122 'understand':177 'univers':233 'unix':31 'use':127 'valid':217,271 'want':16,49 'whatev':265 'whatsoev':161 'window':59 'wlroot':155,304 'work':180,220 'would':319"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5318533"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700008040 {#5091
    date: 2023-11-15 01:27:20.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
64 DENIED moderate
App\Entity\EntryComment {#5092
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#5023
    +user: Proxies\__CG__\App\Entity\User {#5024 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#4879
      +user: Proxies\__CG__\App\Entity\User {#1970 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: App\Entity\EntryComment {#4317
        +user: App\Entity\User {#4330 …}
        +entry: App\Entity\Entry {#2419}
        +magazine: App\Entity\Magazine {#265}
        +image: null
        +parent: null
        +root: null
        +body: """
          Lets see if I got this right, you (the OP), the creator of Louvre, managed to create an example compositor that looks like a better desktop experience than the entire KDE and GNOME teams could ever develop with their infinite wisdom and funding? Fucking amazing. :)\n
          \n
          I know this is an example, but seriously following the “copy apple down to the last pixel” approach you should consider creating a DE for Linux that doesn’t have themes or any user tweaks, just a simple and pixel-perfect copy of macOS. The problem with GNOME and KDE is that they both fail in simple design principals such as proportions, item spacing and whatnot while Apple, and you by extension, excels in that aspect.\n
          \n
          Furthermore my personal opinion is that GNOME tries to reinvent everything and ends up fucking things up and creating situations like the lack of desktop icons going into the activities view by default etc. KDE however does some other stuff right but they fail really badly in terms of proportions and item spacing. Their taskbar is also a shame, for a group that says they want to copy Windows’ style they aren’t doing that well.\n
          \n
          Desktop experiences when it comes to design peaked with macOS Monterey (after that Apple did changes to the settings that are still not polished) and in terms of usability they peaked with the release of Exposé, Spaces and later their integration on Mission Control (initially bad but now they seem better).\n
          \n
          If you do create a 1:1 copy of macOS desktop experience (and keep it updates) as a new DE you’ll most likely become very popular in no time. It doesn’t need themes, customization and all the personalization that would make it really hard to create, just a simply pixel perfect copy of macOS.
          """
        +lang: "en"
        +isAdult: false
        +favouriteCount: 4
        +score: 0
        +lastActive: DateTime @1700263915 {#4311
          date: 2023-11-18 00:31:55.0 +01:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@ehopperdietzel@lemmy.world"
        ]
        +children: Doctrine\ORM\PersistentCollection {#4318 …}
        +nested: Doctrine\ORM\PersistentCollection {#4320 …}
        +votes: Doctrine\ORM\PersistentCollection {#4322 …}
        +reports: Doctrine\ORM\PersistentCollection {#4324 …}
        +favourites: Doctrine\ORM\PersistentCollection {#4326 …}
        +notifications: Doctrine\ORM\PersistentCollection {#4328 …}
        -id: 125250
        -bodyTs: "'1':255,256 'activ':152 'also':179 'amaz':45 'appl':57,114,212 'approach':63 'aren':194 'aspect':122 'bad':168,244 'becom':274 'better':25,249 'chang':214 'come':203 'compositor':20 'consid':66 'control':242 'copi':56,88,190,257,303 'could':35 'creat':17,67,141,253,297 'creator':12 'custom':285 'de':69,269 'default':155 'design':104,205 'desktop':26,147,199,260 'develop':37 'doesn':73,281 'end':135 'entir':30 'etc':156 'ever':36 'everyth':133 'exampl':19,51 'excel':119 'experi':27,200,261 'exposé':234 'extens':118 'fail':101,166 'follow':54 'fuck':44,137 'fund':43 'furthermor':123 'gnome':33,94,129 'go':149 'got':5 'group':184 'hard':295 'howev':158 'icon':148 'infinit':40 'initi':243 'integr':239 'item':109,174 'kde':31,96,157 'keep':263 'know':47 'lack':145 'last':61 'later':237 'let':1 'like':23,143,273 'linux':71 'll':271 'look':22 'louvr':14 'maco':90,208,259,305 'make':292 'manag':15 'mission':241 'monterey':209 'need':283 'new':268 'op':10 'opinion':126 'peak':206,229 'perfect':87,302 'person':125,289 'pixel':62,86,301 'pixel-perfect':85 'polish':222 'popular':276 'princip':105 'problem':92 'proport':108,172 'realli':167,294 'reinvent':132 'releas':232 'right':7,163 'say':186 'see':2 'seem':248 'serious':53 'set':217 'shame':181 'simpl':83,103 'simpli':300 'situat':142 'space':110,175,235 'still':220 'stuff':162 'style':192 'taskbar':177 'team':34 'term':170,225 'theme':76,284 'thing':138 'time':279 'tri':130 'tweak':80 'updat':265 'usabl':227 'user':79 'view':153 'want':188 'well':198 'whatnot':112 'window':191 'wisdom':41 'would':291"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.world/comment/5315293"
        +editedAt: DateTimeImmutable @1700250907 {#4312
          date: 2023-11-17 20:55:07.0 +01:00
        }
        +createdAt: DateTimeImmutable @1700000189 {#4313
          date: 2023-11-14 23:16:29.0 +01:00
        }
      }
      +root: App\Entity\EntryComment {#4317}
      +body: "Thanks! While I may have nailed server-side decorations in that example, as you know, there is too much other stuff to take into account to make a DE actually functional. So, I respect a lot what KDE and GNOME do and the innovations they make. I actually want to create a macOS clone, hahaha. That is one of the reasons I started this project. I will soon continue working on a library for exposing global menus in Wayland/X11. Qt allows defining a custom platform plugin, enabling us to plug external systems for managing global menus. Sadly, I think GTK4 no longer supports that, so I believe an approach would be to display a standard menu with basic functions for apps that don’t support it."
      +lang: "en"
      +isAdult: false
      +favouriteCount: 8
      +score: 0
      +lastActive: DateTime @1700001847 {#4877
        date: 2023-11-14 23:44:07.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
        "@TCB13@lemmy.world"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4880 …}
      +nested: Doctrine\ORM\PersistentCollection {#4882 …}
      +votes: Doctrine\ORM\PersistentCollection {#4884 …}
      +reports: Doctrine\ORM\PersistentCollection {#4886 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4888 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4890 …}
      -id: 125375
      -bodyTs: "'account':26 'actual':31,49 'allow':82 'app':122 'approach':110 'basic':119 'believ':108 'clone':55 'continu':70 'creat':52 'custom':85 'de':30 'decor':10 'defin':83 'display':114 'enabl':88 'exampl':13 'expos':76 'extern':92 'function':32,120 'global':77,96 'gnome':41 'gtk4':101 'hahaha':56 'innov':45 'kde':39 'know':16 'librari':74 'longer':103 'lot':37 'maco':54 'make':28,47 'manag':95 'may':4 'menu':117 'menus':78,97 'much':20 'nail':6 'one':59 'platform':86 'plug':91 'plugin':87 'project':66 'qt':81 'reason':62 'respect':35 'sad':98 'server':8 'server-sid':7 'side':9 'soon':69 'standard':116 'start':64 'stuff':22 'support':104,126 'system':93 'take':24 'thank':1 'think':100 'us':89 'want':50 'wayland/x11':80 'work':71 'would':111"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemmy.world/comment/5315925"
      +editedAt: null
      +createdAt: DateTimeImmutable @1700001847 {#4878
        date: 2023-11-14 23:44:07.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4317}
    +body: """
      Ohh, that’s cool. How far do you want to go with this? I had the idea of using a custom wayland protocol to make per-app global menus instead of per-window so you can have an app open without any windows, like on macOS, in the compositor I wanted to write. However writing a compositor using wlroots is still incredibly difficult if you have no prior experience so the whole thing didn’t get very far yet. If that’s something you want to do too, I’d be very interested in this.\n
      \n
      (Speaking of, why did you decide not to build this on top of wlroots?)
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 2
    +score: 0
    +lastActive: DateTime @1700006447 {#5021
      date: 2023-11-15 01:00:47.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@TCB13@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#5025 …}
    +nested: Doctrine\ORM\PersistentCollection {#5027 …}
    +votes: Doctrine\ORM\PersistentCollection {#5029 …}
    +reports: Doctrine\ORM\PersistentCollection {#5031 …}
    +favourites: Doctrine\ORM\PersistentCollection {#5033 …}
    +notifications: Doctrine\ORM\PersistentCollection {#5035 …}
    -id: 125596
    -bodyTs: "'app':28,41 'build':106 'compositor':51,59 'cool':4 'custom':21 'd':92 'decid':103 'didn':76 'difficult':65 'experi':71 'far':6,80 'get':78 'global':29 'go':11 'howev':56 'idea':17 'incred':64 'instead':31 'interest':95 'like':46 'maco':48 'make':25 'menus':30 'ohh':1 'open':42 'per':27,34 'per-app':26 'per-window':33 'prior':70 'protocol':23 'someth':85 'speak':98 'still':63 'thing':75 'top':109 'use':19,60 'want':9,53,87 'wayland':22 'whole':74 'window':35,45 'without':43 'wlroot':61,111 'write':55,57 'yet':81"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://discuss.tchncs.de/comment/4863983"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700006447 {#5022
      date: 2023-11-15 01:00:47.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4317}
  +body: """
    I actually already created a library for that called Heaven ([github.com/CuarzoSoftware/Heaven](https://github.com/CuarzoSoftware/Heaven)), but I want to rewrite it to make it simpler and add backends for different IPC mechanisms (Unix domain sockets and D-Bus).\n
    \n
    It allows apps to create as many menu bars as they want. The idea is that when one of its toplevel windows is activated, it can notify the “topbar app” to display a specific menu bar. The compositor also informs the “topbar app” about the currently active client. So, it has three APIs: one for apps, another for the “topbar app,” and another for the compositor. Apps are identified by their PID.\n
    \n
    Now, with respect to the second question, a long time ago, I tried to create a compositor using QtWayland, which had the most documentation at that time. However, it had some problems with certain interfaces that made the compositor crash. So, I then looked for wlroots but could find no documentation whatsoever, so I decided to start from scratch. As time passed, I began to learn and understand how protocols work, realizing that one of the most challenging things was implementing protocols correctly, as there are too many interfaces that depend on each other, and you need to implement them all before you can see results and validate that it works. That’s why I decided to create this lib, even as my university thesis, with the focus of offering a default and basic implementation of each protocol so that developers can see a functional compositor from the start and then gradually and specifically override whatever they need, being able to validate each feature they add immediately. Of course, there are many other complicated things I had to learn, such as the DRM/KMS API, buffer sharing through DMA, among other stuff. I really appreciate wlroots, though. I learned a lot by analyzing its source code, and surely today I would be able to create a compositor with it, hahaha.
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 5
  +score: 0
  +lastActive: DateTime @1700008040 {#5090
    date: 2023-11-15 01:27:20.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@TCB13@lemmy.world"
    "@2xsaiko@discuss.tchncs.de"
  ]
  +children: Doctrine\ORM\PersistentCollection {#5093 …}
  +nested: Doctrine\ORM\PersistentCollection {#5095 …}
  +votes: Doctrine\ORM\PersistentCollection {#5097 …}
  +reports: Doctrine\ORM\PersistentCollection {#5099 …}
  +favourites: Doctrine\ORM\PersistentCollection {#5101 …}
  +notifications: Doctrine\ORM\PersistentCollection {#5103 …}
  -id: 125648
  -bodyTs: "'/cuarzosoftware/heaven](https://github.com/cuarzosoftware/heaven)),':13 'abl':269,321 'activ':61,84 'actual':2 'add':25,275 'ago':120 'allow':39 'alreadi':3 'also':76 'among':298 'analyz':311 'anoth':94,100 'api':90,293 'app':40,67,80,93,98,104 'appreci':303 'backend':26 'bar':46,73 'basic':243 'began':173 'buffer':294 'bus':37 'call':9 'certain':143 'challeng':187 'client':85 'code':314 'complic':283 'compositor':75,103,126,148,255,325 'correct':192 'could':157 'cours':278 'crash':149 'creat':4,42,124,227,323 'current':83 'd':36 'd-bus':35 'decid':164,225 'default':241 'depend':200 'develop':250 'differ':28 'display':69 'dma':297 'document':133,160 'domain':32 'drm/kms':292 'even':230 'featur':273 'find':158 'focus':237 'function':254 'github.com':12 'github.com/cuarzosoftware/heaven](https://github.com/cuarzosoftware/heaven)),':11 'gradual':261 'hahaha':328 'heaven':10 'howev':137 'idea':51 'identifi':106 'immedi':276 'implement':190,208,244 'inform':77 'interfac':144,198 'ipc':29 'learn':175,288,307 'lib':229 'librari':6 'long':118 'look':153 'lot':309 'made':146 'make':21 'mani':44,197,281 'mechan':30 'menu':45,72 'need':206,267 'notifi':64 'offer':239 'one':55,91,183 'overrid':264 'pass':171 'pid':109 'problem':141 'protocol':179,191,247 'qtwayland':128 'question':116 'realiz':181 'realli':302 'respect':112 'result':215 'rewrit':18 'scratch':168 'second':115 'see':214,252 'share':295 'simpler':23 'socket':33 'sourc':313 'specif':71,263 'start':166,258 'stuff':300 'sure':316 'thesi':234 'thing':188,284 'though':305 'three':89 'time':119,136,170 'today':317 'topbar':66,79,97 'toplevel':58 'tri':122 'understand':177 'univers':233 'unix':31 'use':127 'valid':217,271 'want':16,49 'whatev':265 'whatsoev':161 'window':59 'wlroot':155,304 'work':180,220 'would':319"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5318533"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700008040 {#5091
    date: 2023-11-15 01:27:20.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
65 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
66 DENIED moderate
App\Entity\EntryComment {#5131
  +user: Proxies\__CG__\App\Entity\User {#5024 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#5092
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#5023
      +user: Proxies\__CG__\App\Entity\User {#5024 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: App\Entity\EntryComment {#4879
        +user: Proxies\__CG__\App\Entity\User {#1970 …}
        +entry: App\Entity\Entry {#2419}
        +magazine: App\Entity\Magazine {#265}
        +image: null
        +parent: App\Entity\EntryComment {#4317
          +user: App\Entity\User {#4330 …}
          +entry: App\Entity\Entry {#2419}
          +magazine: App\Entity\Magazine {#265}
          +image: null
          +parent: null
          +root: null
          +body: """
            Lets see if I got this right, you (the OP), the creator of Louvre, managed to create an example compositor that looks like a better desktop experience than the entire KDE and GNOME teams could ever develop with their infinite wisdom and funding? Fucking amazing. :)\n
            \n
            I know this is an example, but seriously following the “copy apple down to the last pixel” approach you should consider creating a DE for Linux that doesn’t have themes or any user tweaks, just a simple and pixel-perfect copy of macOS. The problem with GNOME and KDE is that they both fail in simple design principals such as proportions, item spacing and whatnot while Apple, and you by extension, excels in that aspect.\n
            \n
            Furthermore my personal opinion is that GNOME tries to reinvent everything and ends up fucking things up and creating situations like the lack of desktop icons going into the activities view by default etc. KDE however does some other stuff right but they fail really badly in terms of proportions and item spacing. Their taskbar is also a shame, for a group that says they want to copy Windows’ style they aren’t doing that well.\n
            \n
            Desktop experiences when it comes to design peaked with macOS Monterey (after that Apple did changes to the settings that are still not polished) and in terms of usability they peaked with the release of Exposé, Spaces and later their integration on Mission Control (initially bad but now they seem better).\n
            \n
            If you do create a 1:1 copy of macOS desktop experience (and keep it updates) as a new DE you’ll most likely become very popular in no time. It doesn’t need themes, customization and all the personalization that would make it really hard to create, just a simply pixel perfect copy of macOS.
            """
          +lang: "en"
          +isAdult: false
          +favouriteCount: 4
          +score: 0
          +lastActive: DateTime @1700263915 {#4311
            date: 2023-11-18 00:31:55.0 +01:00
          }
          +ip: null
          +tags: null
          +mentions: [
            "@ehopperdietzel@lemmy.world"
          ]
          +children: Doctrine\ORM\PersistentCollection {#4318 …}
          +nested: Doctrine\ORM\PersistentCollection {#4320 …}
          +votes: Doctrine\ORM\PersistentCollection {#4322 …}
          +reports: Doctrine\ORM\PersistentCollection {#4324 …}
          +favourites: Doctrine\ORM\PersistentCollection {#4326 …}
          +notifications: Doctrine\ORM\PersistentCollection {#4328 …}
          -id: 125250
          -bodyTs: "'1':255,256 'activ':152 'also':179 'amaz':45 'appl':57,114,212 'approach':63 'aren':194 'aspect':122 'bad':168,244 'becom':274 'better':25,249 'chang':214 'come':203 'compositor':20 'consid':66 'control':242 'copi':56,88,190,257,303 'could':35 'creat':17,67,141,253,297 'creator':12 'custom':285 'de':69,269 'default':155 'design':104,205 'desktop':26,147,199,260 'develop':37 'doesn':73,281 'end':135 'entir':30 'etc':156 'ever':36 'everyth':133 'exampl':19,51 'excel':119 'experi':27,200,261 'exposé':234 'extens':118 'fail':101,166 'follow':54 'fuck':44,137 'fund':43 'furthermor':123 'gnome':33,94,129 'go':149 'got':5 'group':184 'hard':295 'howev':158 'icon':148 'infinit':40 'initi':243 'integr':239 'item':109,174 'kde':31,96,157 'keep':263 'know':47 'lack':145 'last':61 'later':237 'let':1 'like':23,143,273 'linux':71 'll':271 'look':22 'louvr':14 'maco':90,208,259,305 'make':292 'manag':15 'mission':241 'monterey':209 'need':283 'new':268 'op':10 'opinion':126 'peak':206,229 'perfect':87,302 'person':125,289 'pixel':62,86,301 'pixel-perfect':85 'polish':222 'popular':276 'princip':105 'problem':92 'proport':108,172 'realli':167,294 'reinvent':132 'releas':232 'right':7,163 'say':186 'see':2 'seem':248 'serious':53 'set':217 'shame':181 'simpl':83,103 'simpli':300 'situat':142 'space':110,175,235 'still':220 'stuff':162 'style':192 'taskbar':177 'team':34 'term':170,225 'theme':76,284 'thing':138 'time':279 'tri':130 'tweak':80 'updat':265 'usabl':227 'user':79 'view':153 'want':188 'well':198 'whatnot':112 'window':191 'wisdom':41 'would':291"
          +ranking: 0
          +commentCount: 0
          +upVotes: 0
          +downVotes: 0
          +visibility: "visible             "
          +apId: "https://lemmy.world/comment/5315293"
          +editedAt: DateTimeImmutable @1700250907 {#4312
            date: 2023-11-17 20:55:07.0 +01:00
          }
          +createdAt: DateTimeImmutable @1700000189 {#4313
            date: 2023-11-14 23:16:29.0 +01:00
          }
        }
        +root: App\Entity\EntryComment {#4317}
        +body: "Thanks! While I may have nailed server-side decorations in that example, as you know, there is too much other stuff to take into account to make a DE actually functional. So, I respect a lot what KDE and GNOME do and the innovations they make. I actually want to create a macOS clone, hahaha. That is one of the reasons I started this project. I will soon continue working on a library for exposing global menus in Wayland/X11. Qt allows defining a custom platform plugin, enabling us to plug external systems for managing global menus. Sadly, I think GTK4 no longer supports that, so I believe an approach would be to display a standard menu with basic functions for apps that don’t support it."
        +lang: "en"
        +isAdult: false
        +favouriteCount: 8
        +score: 0
        +lastActive: DateTime @1700001847 {#4877
          date: 2023-11-14 23:44:07.0 +01:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@ehopperdietzel@lemmy.world"
          "@TCB13@lemmy.world"
        ]
        +children: Doctrine\ORM\PersistentCollection {#4880 …}
        +nested: Doctrine\ORM\PersistentCollection {#4882 …}
        +votes: Doctrine\ORM\PersistentCollection {#4884 …}
        +reports: Doctrine\ORM\PersistentCollection {#4886 …}
        +favourites: Doctrine\ORM\PersistentCollection {#4888 …}
        +notifications: Doctrine\ORM\PersistentCollection {#4890 …}
        -id: 125375
        -bodyTs: "'account':26 'actual':31,49 'allow':82 'app':122 'approach':110 'basic':119 'believ':108 'clone':55 'continu':70 'creat':52 'custom':85 'de':30 'decor':10 'defin':83 'display':114 'enabl':88 'exampl':13 'expos':76 'extern':92 'function':32,120 'global':77,96 'gnome':41 'gtk4':101 'hahaha':56 'innov':45 'kde':39 'know':16 'librari':74 'longer':103 'lot':37 'maco':54 'make':28,47 'manag':95 'may':4 'menu':117 'menus':78,97 'much':20 'nail':6 'one':59 'platform':86 'plug':91 'plugin':87 'project':66 'qt':81 'reason':62 'respect':35 'sad':98 'server':8 'server-sid':7 'side':9 'soon':69 'standard':116 'start':64 'stuff':22 'support':104,126 'system':93 'take':24 'thank':1 'think':100 'us':89 'want':50 'wayland/x11':80 'work':71 'would':111"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.world/comment/5315925"
        +editedAt: null
        +createdAt: DateTimeImmutable @1700001847 {#4878
          date: 2023-11-14 23:44:07.0 +01:00
        }
      }
      +root: App\Entity\EntryComment {#4317}
      +body: """
        Ohh, that’s cool. How far do you want to go with this? I had the idea of using a custom wayland protocol to make per-app global menus instead of per-window so you can have an app open without any windows, like on macOS, in the compositor I wanted to write. However writing a compositor using wlroots is still incredibly difficult if you have no prior experience so the whole thing didn’t get very far yet. If that’s something you want to do too, I’d be very interested in this.\n
        \n
        (Speaking of, why did you decide not to build this on top of wlroots?)
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 2
      +score: 0
      +lastActive: DateTime @1700006447 {#5021
        date: 2023-11-15 01:00:47.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
        "@TCB13@lemmy.world"
      ]
      +children: Doctrine\ORM\PersistentCollection {#5025 …}
      +nested: Doctrine\ORM\PersistentCollection {#5027 …}
      +votes: Doctrine\ORM\PersistentCollection {#5029 …}
      +reports: Doctrine\ORM\PersistentCollection {#5031 …}
      +favourites: Doctrine\ORM\PersistentCollection {#5033 …}
      +notifications: Doctrine\ORM\PersistentCollection {#5035 …}
      -id: 125596
      -bodyTs: "'app':28,41 'build':106 'compositor':51,59 'cool':4 'custom':21 'd':92 'decid':103 'didn':76 'difficult':65 'experi':71 'far':6,80 'get':78 'global':29 'go':11 'howev':56 'idea':17 'incred':64 'instead':31 'interest':95 'like':46 'maco':48 'make':25 'menus':30 'ohh':1 'open':42 'per':27,34 'per-app':26 'per-window':33 'prior':70 'protocol':23 'someth':85 'speak':98 'still':63 'thing':75 'top':109 'use':19,60 'want':9,53,87 'wayland':22 'whole':74 'window':35,45 'without':43 'wlroot':61,111 'write':55,57 'yet':81"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://discuss.tchncs.de/comment/4863983"
      +editedAt: null
      +createdAt: DateTimeImmutable @1700006447 {#5022
        date: 2023-11-15 01:00:47.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4317}
    +body: """
      I actually already created a library for that called Heaven ([github.com/CuarzoSoftware/Heaven](https://github.com/CuarzoSoftware/Heaven)), but I want to rewrite it to make it simpler and add backends for different IPC mechanisms (Unix domain sockets and D-Bus).\n
      \n
      It allows apps to create as many menu bars as they want. The idea is that when one of its toplevel windows is activated, it can notify the “topbar app” to display a specific menu bar. The compositor also informs the “topbar app” about the currently active client. So, it has three APIs: one for apps, another for the “topbar app,” and another for the compositor. Apps are identified by their PID.\n
      \n
      Now, with respect to the second question, a long time ago, I tried to create a compositor using QtWayland, which had the most documentation at that time. However, it had some problems with certain interfaces that made the compositor crash. So, I then looked for wlroots but could find no documentation whatsoever, so I decided to start from scratch. As time passed, I began to learn and understand how protocols work, realizing that one of the most challenging things was implementing protocols correctly, as there are too many interfaces that depend on each other, and you need to implement them all before you can see results and validate that it works. That’s why I decided to create this lib, even as my university thesis, with the focus of offering a default and basic implementation of each protocol so that developers can see a functional compositor from the start and then gradually and specifically override whatever they need, being able to validate each feature they add immediately. Of course, there are many other complicated things I had to learn, such as the DRM/KMS API, buffer sharing through DMA, among other stuff. I really appreciate wlroots, though. I learned a lot by analyzing its source code, and surely today I would be able to create a compositor with it, hahaha.
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 5
    +score: 0
    +lastActive: DateTime @1700008040 {#5090
      date: 2023-11-15 01:27:20.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@TCB13@lemmy.world"
      "@2xsaiko@discuss.tchncs.de"
    ]
    +children: Doctrine\ORM\PersistentCollection {#5093 …}
    +nested: Doctrine\ORM\PersistentCollection {#5095 …}
    +votes: Doctrine\ORM\PersistentCollection {#5097 …}
    +reports: Doctrine\ORM\PersistentCollection {#5099 …}
    +favourites: Doctrine\ORM\PersistentCollection {#5101 …}
    +notifications: Doctrine\ORM\PersistentCollection {#5103 …}
    -id: 125648
    -bodyTs: "'/cuarzosoftware/heaven](https://github.com/cuarzosoftware/heaven)),':13 'abl':269,321 'activ':61,84 'actual':2 'add':25,275 'ago':120 'allow':39 'alreadi':3 'also':76 'among':298 'analyz':311 'anoth':94,100 'api':90,293 'app':40,67,80,93,98,104 'appreci':303 'backend':26 'bar':46,73 'basic':243 'began':173 'buffer':294 'bus':37 'call':9 'certain':143 'challeng':187 'client':85 'code':314 'complic':283 'compositor':75,103,126,148,255,325 'correct':192 'could':157 'cours':278 'crash':149 'creat':4,42,124,227,323 'current':83 'd':36 'd-bus':35 'decid':164,225 'default':241 'depend':200 'develop':250 'differ':28 'display':69 'dma':297 'document':133,160 'domain':32 'drm/kms':292 'even':230 'featur':273 'find':158 'focus':237 'function':254 'github.com':12 'github.com/cuarzosoftware/heaven](https://github.com/cuarzosoftware/heaven)),':11 'gradual':261 'hahaha':328 'heaven':10 'howev':137 'idea':51 'identifi':106 'immedi':276 'implement':190,208,244 'inform':77 'interfac':144,198 'ipc':29 'learn':175,288,307 'lib':229 'librari':6 'long':118 'look':153 'lot':309 'made':146 'make':21 'mani':44,197,281 'mechan':30 'menu':45,72 'need':206,267 'notifi':64 'offer':239 'one':55,91,183 'overrid':264 'pass':171 'pid':109 'problem':141 'protocol':179,191,247 'qtwayland':128 'question':116 'realiz':181 'realli':302 'respect':112 'result':215 'rewrit':18 'scratch':168 'second':115 'see':214,252 'share':295 'simpler':23 'socket':33 'sourc':313 'specif':71,263 'start':166,258 'stuff':300 'sure':316 'thesi':234 'thing':188,284 'though':305 'three':89 'time':119,136,170 'today':317 'topbar':66,79,97 'toplevel':58 'tri':122 'understand':177 'univers':233 'unix':31 'use':127 'valid':217,271 'want':16,49 'whatev':265 'whatsoev':161 'window':59 'wlroot':155,304 'work':180,220 'would':319"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.world/comment/5318533"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700008040 {#5091
      date: 2023-11-15 01:27:20.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4317}
  +body: "Well that’s awesome. I’ll take a closer look at this in a couple days. Maybe even contribute if I have the time :P"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 3
  +score: 0
  +lastActive: DateTime @1700009135 {#5132
    date: 2023-11-15 01:45:35.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@TCB13@lemmy.world"
    "@2xsaiko@discuss.tchncs.de"
  ]
  +children: Doctrine\ORM\PersistentCollection {#5128 …}
  +nested: Doctrine\ORM\PersistentCollection {#5124 …}
  +votes: Doctrine\ORM\PersistentCollection {#5122 …}
  +reports: Doctrine\ORM\PersistentCollection {#5137 …}
  +favourites: Doctrine\ORM\PersistentCollection {#5139 …}
  +notifications: Doctrine\ORM\PersistentCollection {#5141 …}
  -id: 125687
  -bodyTs: "'awesom':4 'closer':9 'contribut':19 'coupl':15 'day':16 'even':18 'll':6 'look':10 'mayb':17 'p':25 'take':7 'time':24 'well':1"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://discuss.tchncs.de/comment/4865547"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700009135 {#5135
    date: 2023-11-15 01:45:35.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
67 DENIED edit
App\Entity\EntryComment {#5131
  +user: Proxies\__CG__\App\Entity\User {#5024 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#5092
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#5023
      +user: Proxies\__CG__\App\Entity\User {#5024 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: App\Entity\EntryComment {#4879
        +user: Proxies\__CG__\App\Entity\User {#1970 …}
        +entry: App\Entity\Entry {#2419}
        +magazine: App\Entity\Magazine {#265}
        +image: null
        +parent: App\Entity\EntryComment {#4317
          +user: App\Entity\User {#4330 …}
          +entry: App\Entity\Entry {#2419}
          +magazine: App\Entity\Magazine {#265}
          +image: null
          +parent: null
          +root: null
          +body: """
            Lets see if I got this right, you (the OP), the creator of Louvre, managed to create an example compositor that looks like a better desktop experience than the entire KDE and GNOME teams could ever develop with their infinite wisdom and funding? Fucking amazing. :)\n
            \n
            I know this is an example, but seriously following the “copy apple down to the last pixel” approach you should consider creating a DE for Linux that doesn’t have themes or any user tweaks, just a simple and pixel-perfect copy of macOS. The problem with GNOME and KDE is that they both fail in simple design principals such as proportions, item spacing and whatnot while Apple, and you by extension, excels in that aspect.\n
            \n
            Furthermore my personal opinion is that GNOME tries to reinvent everything and ends up fucking things up and creating situations like the lack of desktop icons going into the activities view by default etc. KDE however does some other stuff right but they fail really badly in terms of proportions and item spacing. Their taskbar is also a shame, for a group that says they want to copy Windows’ style they aren’t doing that well.\n
            \n
            Desktop experiences when it comes to design peaked with macOS Monterey (after that Apple did changes to the settings that are still not polished) and in terms of usability they peaked with the release of Exposé, Spaces and later their integration on Mission Control (initially bad but now they seem better).\n
            \n
            If you do create a 1:1 copy of macOS desktop experience (and keep it updates) as a new DE you’ll most likely become very popular in no time. It doesn’t need themes, customization and all the personalization that would make it really hard to create, just a simply pixel perfect copy of macOS.
            """
          +lang: "en"
          +isAdult: false
          +favouriteCount: 4
          +score: 0
          +lastActive: DateTime @1700263915 {#4311
            date: 2023-11-18 00:31:55.0 +01:00
          }
          +ip: null
          +tags: null
          +mentions: [
            "@ehopperdietzel@lemmy.world"
          ]
          +children: Doctrine\ORM\PersistentCollection {#4318 …}
          +nested: Doctrine\ORM\PersistentCollection {#4320 …}
          +votes: Doctrine\ORM\PersistentCollection {#4322 …}
          +reports: Doctrine\ORM\PersistentCollection {#4324 …}
          +favourites: Doctrine\ORM\PersistentCollection {#4326 …}
          +notifications: Doctrine\ORM\PersistentCollection {#4328 …}
          -id: 125250
          -bodyTs: "'1':255,256 'activ':152 'also':179 'amaz':45 'appl':57,114,212 'approach':63 'aren':194 'aspect':122 'bad':168,244 'becom':274 'better':25,249 'chang':214 'come':203 'compositor':20 'consid':66 'control':242 'copi':56,88,190,257,303 'could':35 'creat':17,67,141,253,297 'creator':12 'custom':285 'de':69,269 'default':155 'design':104,205 'desktop':26,147,199,260 'develop':37 'doesn':73,281 'end':135 'entir':30 'etc':156 'ever':36 'everyth':133 'exampl':19,51 'excel':119 'experi':27,200,261 'exposé':234 'extens':118 'fail':101,166 'follow':54 'fuck':44,137 'fund':43 'furthermor':123 'gnome':33,94,129 'go':149 'got':5 'group':184 'hard':295 'howev':158 'icon':148 'infinit':40 'initi':243 'integr':239 'item':109,174 'kde':31,96,157 'keep':263 'know':47 'lack':145 'last':61 'later':237 'let':1 'like':23,143,273 'linux':71 'll':271 'look':22 'louvr':14 'maco':90,208,259,305 'make':292 'manag':15 'mission':241 'monterey':209 'need':283 'new':268 'op':10 'opinion':126 'peak':206,229 'perfect':87,302 'person':125,289 'pixel':62,86,301 'pixel-perfect':85 'polish':222 'popular':276 'princip':105 'problem':92 'proport':108,172 'realli':167,294 'reinvent':132 'releas':232 'right':7,163 'say':186 'see':2 'seem':248 'serious':53 'set':217 'shame':181 'simpl':83,103 'simpli':300 'situat':142 'space':110,175,235 'still':220 'stuff':162 'style':192 'taskbar':177 'team':34 'term':170,225 'theme':76,284 'thing':138 'time':279 'tri':130 'tweak':80 'updat':265 'usabl':227 'user':79 'view':153 'want':188 'well':198 'whatnot':112 'window':191 'wisdom':41 'would':291"
          +ranking: 0
          +commentCount: 0
          +upVotes: 0
          +downVotes: 0
          +visibility: "visible             "
          +apId: "https://lemmy.world/comment/5315293"
          +editedAt: DateTimeImmutable @1700250907 {#4312
            date: 2023-11-17 20:55:07.0 +01:00
          }
          +createdAt: DateTimeImmutable @1700000189 {#4313
            date: 2023-11-14 23:16:29.0 +01:00
          }
        }
        +root: App\Entity\EntryComment {#4317}
        +body: "Thanks! While I may have nailed server-side decorations in that example, as you know, there is too much other stuff to take into account to make a DE actually functional. So, I respect a lot what KDE and GNOME do and the innovations they make. I actually want to create a macOS clone, hahaha. That is one of the reasons I started this project. I will soon continue working on a library for exposing global menus in Wayland/X11. Qt allows defining a custom platform plugin, enabling us to plug external systems for managing global menus. Sadly, I think GTK4 no longer supports that, so I believe an approach would be to display a standard menu with basic functions for apps that don’t support it."
        +lang: "en"
        +isAdult: false
        +favouriteCount: 8
        +score: 0
        +lastActive: DateTime @1700001847 {#4877
          date: 2023-11-14 23:44:07.0 +01:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@ehopperdietzel@lemmy.world"
          "@TCB13@lemmy.world"
        ]
        +children: Doctrine\ORM\PersistentCollection {#4880 …}
        +nested: Doctrine\ORM\PersistentCollection {#4882 …}
        +votes: Doctrine\ORM\PersistentCollection {#4884 …}
        +reports: Doctrine\ORM\PersistentCollection {#4886 …}
        +favourites: Doctrine\ORM\PersistentCollection {#4888 …}
        +notifications: Doctrine\ORM\PersistentCollection {#4890 …}
        -id: 125375
        -bodyTs: "'account':26 'actual':31,49 'allow':82 'app':122 'approach':110 'basic':119 'believ':108 'clone':55 'continu':70 'creat':52 'custom':85 'de':30 'decor':10 'defin':83 'display':114 'enabl':88 'exampl':13 'expos':76 'extern':92 'function':32,120 'global':77,96 'gnome':41 'gtk4':101 'hahaha':56 'innov':45 'kde':39 'know':16 'librari':74 'longer':103 'lot':37 'maco':54 'make':28,47 'manag':95 'may':4 'menu':117 'menus':78,97 'much':20 'nail':6 'one':59 'platform':86 'plug':91 'plugin':87 'project':66 'qt':81 'reason':62 'respect':35 'sad':98 'server':8 'server-sid':7 'side':9 'soon':69 'standard':116 'start':64 'stuff':22 'support':104,126 'system':93 'take':24 'thank':1 'think':100 'us':89 'want':50 'wayland/x11':80 'work':71 'would':111"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.world/comment/5315925"
        +editedAt: null
        +createdAt: DateTimeImmutable @1700001847 {#4878
          date: 2023-11-14 23:44:07.0 +01:00
        }
      }
      +root: App\Entity\EntryComment {#4317}
      +body: """
        Ohh, that’s cool. How far do you want to go with this? I had the idea of using a custom wayland protocol to make per-app global menus instead of per-window so you can have an app open without any windows, like on macOS, in the compositor I wanted to write. However writing a compositor using wlroots is still incredibly difficult if you have no prior experience so the whole thing didn’t get very far yet. If that’s something you want to do too, I’d be very interested in this.\n
        \n
        (Speaking of, why did you decide not to build this on top of wlroots?)
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 2
      +score: 0
      +lastActive: DateTime @1700006447 {#5021
        date: 2023-11-15 01:00:47.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
        "@TCB13@lemmy.world"
      ]
      +children: Doctrine\ORM\PersistentCollection {#5025 …}
      +nested: Doctrine\ORM\PersistentCollection {#5027 …}
      +votes: Doctrine\ORM\PersistentCollection {#5029 …}
      +reports: Doctrine\ORM\PersistentCollection {#5031 …}
      +favourites: Doctrine\ORM\PersistentCollection {#5033 …}
      +notifications: Doctrine\ORM\PersistentCollection {#5035 …}
      -id: 125596
      -bodyTs: "'app':28,41 'build':106 'compositor':51,59 'cool':4 'custom':21 'd':92 'decid':103 'didn':76 'difficult':65 'experi':71 'far':6,80 'get':78 'global':29 'go':11 'howev':56 'idea':17 'incred':64 'instead':31 'interest':95 'like':46 'maco':48 'make':25 'menus':30 'ohh':1 'open':42 'per':27,34 'per-app':26 'per-window':33 'prior':70 'protocol':23 'someth':85 'speak':98 'still':63 'thing':75 'top':109 'use':19,60 'want':9,53,87 'wayland':22 'whole':74 'window':35,45 'without':43 'wlroot':61,111 'write':55,57 'yet':81"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://discuss.tchncs.de/comment/4863983"
      +editedAt: null
      +createdAt: DateTimeImmutable @1700006447 {#5022
        date: 2023-11-15 01:00:47.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4317}
    +body: """
      I actually already created a library for that called Heaven ([github.com/CuarzoSoftware/Heaven](https://github.com/CuarzoSoftware/Heaven)), but I want to rewrite it to make it simpler and add backends for different IPC mechanisms (Unix domain sockets and D-Bus).\n
      \n
      It allows apps to create as many menu bars as they want. The idea is that when one of its toplevel windows is activated, it can notify the “topbar app” to display a specific menu bar. The compositor also informs the “topbar app” about the currently active client. So, it has three APIs: one for apps, another for the “topbar app,” and another for the compositor. Apps are identified by their PID.\n
      \n
      Now, with respect to the second question, a long time ago, I tried to create a compositor using QtWayland, which had the most documentation at that time. However, it had some problems with certain interfaces that made the compositor crash. So, I then looked for wlroots but could find no documentation whatsoever, so I decided to start from scratch. As time passed, I began to learn and understand how protocols work, realizing that one of the most challenging things was implementing protocols correctly, as there are too many interfaces that depend on each other, and you need to implement them all before you can see results and validate that it works. That’s why I decided to create this lib, even as my university thesis, with the focus of offering a default and basic implementation of each protocol so that developers can see a functional compositor from the start and then gradually and specifically override whatever they need, being able to validate each feature they add immediately. Of course, there are many other complicated things I had to learn, such as the DRM/KMS API, buffer sharing through DMA, among other stuff. I really appreciate wlroots, though. I learned a lot by analyzing its source code, and surely today I would be able to create a compositor with it, hahaha.
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 5
    +score: 0
    +lastActive: DateTime @1700008040 {#5090
      date: 2023-11-15 01:27:20.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@TCB13@lemmy.world"
      "@2xsaiko@discuss.tchncs.de"
    ]
    +children: Doctrine\ORM\PersistentCollection {#5093 …}
    +nested: Doctrine\ORM\PersistentCollection {#5095 …}
    +votes: Doctrine\ORM\PersistentCollection {#5097 …}
    +reports: Doctrine\ORM\PersistentCollection {#5099 …}
    +favourites: Doctrine\ORM\PersistentCollection {#5101 …}
    +notifications: Doctrine\ORM\PersistentCollection {#5103 …}
    -id: 125648
    -bodyTs: "'/cuarzosoftware/heaven](https://github.com/cuarzosoftware/heaven)),':13 'abl':269,321 'activ':61,84 'actual':2 'add':25,275 'ago':120 'allow':39 'alreadi':3 'also':76 'among':298 'analyz':311 'anoth':94,100 'api':90,293 'app':40,67,80,93,98,104 'appreci':303 'backend':26 'bar':46,73 'basic':243 'began':173 'buffer':294 'bus':37 'call':9 'certain':143 'challeng':187 'client':85 'code':314 'complic':283 'compositor':75,103,126,148,255,325 'correct':192 'could':157 'cours':278 'crash':149 'creat':4,42,124,227,323 'current':83 'd':36 'd-bus':35 'decid':164,225 'default':241 'depend':200 'develop':250 'differ':28 'display':69 'dma':297 'document':133,160 'domain':32 'drm/kms':292 'even':230 'featur':273 'find':158 'focus':237 'function':254 'github.com':12 'github.com/cuarzosoftware/heaven](https://github.com/cuarzosoftware/heaven)),':11 'gradual':261 'hahaha':328 'heaven':10 'howev':137 'idea':51 'identifi':106 'immedi':276 'implement':190,208,244 'inform':77 'interfac':144,198 'ipc':29 'learn':175,288,307 'lib':229 'librari':6 'long':118 'look':153 'lot':309 'made':146 'make':21 'mani':44,197,281 'mechan':30 'menu':45,72 'need':206,267 'notifi':64 'offer':239 'one':55,91,183 'overrid':264 'pass':171 'pid':109 'problem':141 'protocol':179,191,247 'qtwayland':128 'question':116 'realiz':181 'realli':302 'respect':112 'result':215 'rewrit':18 'scratch':168 'second':115 'see':214,252 'share':295 'simpler':23 'socket':33 'sourc':313 'specif':71,263 'start':166,258 'stuff':300 'sure':316 'thesi':234 'thing':188,284 'though':305 'three':89 'time':119,136,170 'today':317 'topbar':66,79,97 'toplevel':58 'tri':122 'understand':177 'univers':233 'unix':31 'use':127 'valid':217,271 'want':16,49 'whatev':265 'whatsoev':161 'window':59 'wlroot':155,304 'work':180,220 'would':319"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.world/comment/5318533"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700008040 {#5091
      date: 2023-11-15 01:27:20.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4317}
  +body: "Well that’s awesome. I’ll take a closer look at this in a couple days. Maybe even contribute if I have the time :P"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 3
  +score: 0
  +lastActive: DateTime @1700009135 {#5132
    date: 2023-11-15 01:45:35.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@TCB13@lemmy.world"
    "@2xsaiko@discuss.tchncs.de"
  ]
  +children: Doctrine\ORM\PersistentCollection {#5128 …}
  +nested: Doctrine\ORM\PersistentCollection {#5124 …}
  +votes: Doctrine\ORM\PersistentCollection {#5122 …}
  +reports: Doctrine\ORM\PersistentCollection {#5137 …}
  +favourites: Doctrine\ORM\PersistentCollection {#5139 …}
  +notifications: Doctrine\ORM\PersistentCollection {#5141 …}
  -id: 125687
  -bodyTs: "'awesom':4 'closer':9 'contribut':19 'coupl':15 'day':16 'even':18 'll':6 'look':10 'mayb':17 'p':25 'take':7 'time':24 'well':1"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://discuss.tchncs.de/comment/4865547"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700009135 {#5135
    date: 2023-11-15 01:45:35.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
68 DENIED moderate
App\Entity\EntryComment {#5131
  +user: Proxies\__CG__\App\Entity\User {#5024 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#5092
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#5023
      +user: Proxies\__CG__\App\Entity\User {#5024 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: App\Entity\EntryComment {#4879
        +user: Proxies\__CG__\App\Entity\User {#1970 …}
        +entry: App\Entity\Entry {#2419}
        +magazine: App\Entity\Magazine {#265}
        +image: null
        +parent: App\Entity\EntryComment {#4317
          +user: App\Entity\User {#4330 …}
          +entry: App\Entity\Entry {#2419}
          +magazine: App\Entity\Magazine {#265}
          +image: null
          +parent: null
          +root: null
          +body: """
            Lets see if I got this right, you (the OP), the creator of Louvre, managed to create an example compositor that looks like a better desktop experience than the entire KDE and GNOME teams could ever develop with their infinite wisdom and funding? Fucking amazing. :)\n
            \n
            I know this is an example, but seriously following the “copy apple down to the last pixel” approach you should consider creating a DE for Linux that doesn’t have themes or any user tweaks, just a simple and pixel-perfect copy of macOS. The problem with GNOME and KDE is that they both fail in simple design principals such as proportions, item spacing and whatnot while Apple, and you by extension, excels in that aspect.\n
            \n
            Furthermore my personal opinion is that GNOME tries to reinvent everything and ends up fucking things up and creating situations like the lack of desktop icons going into the activities view by default etc. KDE however does some other stuff right but they fail really badly in terms of proportions and item spacing. Their taskbar is also a shame, for a group that says they want to copy Windows’ style they aren’t doing that well.\n
            \n
            Desktop experiences when it comes to design peaked with macOS Monterey (after that Apple did changes to the settings that are still not polished) and in terms of usability they peaked with the release of Exposé, Spaces and later their integration on Mission Control (initially bad but now they seem better).\n
            \n
            If you do create a 1:1 copy of macOS desktop experience (and keep it updates) as a new DE you’ll most likely become very popular in no time. It doesn’t need themes, customization and all the personalization that would make it really hard to create, just a simply pixel perfect copy of macOS.
            """
          +lang: "en"
          +isAdult: false
          +favouriteCount: 4
          +score: 0
          +lastActive: DateTime @1700263915 {#4311
            date: 2023-11-18 00:31:55.0 +01:00
          }
          +ip: null
          +tags: null
          +mentions: [
            "@ehopperdietzel@lemmy.world"
          ]
          +children: Doctrine\ORM\PersistentCollection {#4318 …}
          +nested: Doctrine\ORM\PersistentCollection {#4320 …}
          +votes: Doctrine\ORM\PersistentCollection {#4322 …}
          +reports: Doctrine\ORM\PersistentCollection {#4324 …}
          +favourites: Doctrine\ORM\PersistentCollection {#4326 …}
          +notifications: Doctrine\ORM\PersistentCollection {#4328 …}
          -id: 125250
          -bodyTs: "'1':255,256 'activ':152 'also':179 'amaz':45 'appl':57,114,212 'approach':63 'aren':194 'aspect':122 'bad':168,244 'becom':274 'better':25,249 'chang':214 'come':203 'compositor':20 'consid':66 'control':242 'copi':56,88,190,257,303 'could':35 'creat':17,67,141,253,297 'creator':12 'custom':285 'de':69,269 'default':155 'design':104,205 'desktop':26,147,199,260 'develop':37 'doesn':73,281 'end':135 'entir':30 'etc':156 'ever':36 'everyth':133 'exampl':19,51 'excel':119 'experi':27,200,261 'exposé':234 'extens':118 'fail':101,166 'follow':54 'fuck':44,137 'fund':43 'furthermor':123 'gnome':33,94,129 'go':149 'got':5 'group':184 'hard':295 'howev':158 'icon':148 'infinit':40 'initi':243 'integr':239 'item':109,174 'kde':31,96,157 'keep':263 'know':47 'lack':145 'last':61 'later':237 'let':1 'like':23,143,273 'linux':71 'll':271 'look':22 'louvr':14 'maco':90,208,259,305 'make':292 'manag':15 'mission':241 'monterey':209 'need':283 'new':268 'op':10 'opinion':126 'peak':206,229 'perfect':87,302 'person':125,289 'pixel':62,86,301 'pixel-perfect':85 'polish':222 'popular':276 'princip':105 'problem':92 'proport':108,172 'realli':167,294 'reinvent':132 'releas':232 'right':7,163 'say':186 'see':2 'seem':248 'serious':53 'set':217 'shame':181 'simpl':83,103 'simpli':300 'situat':142 'space':110,175,235 'still':220 'stuff':162 'style':192 'taskbar':177 'team':34 'term':170,225 'theme':76,284 'thing':138 'time':279 'tri':130 'tweak':80 'updat':265 'usabl':227 'user':79 'view':153 'want':188 'well':198 'whatnot':112 'window':191 'wisdom':41 'would':291"
          +ranking: 0
          +commentCount: 0
          +upVotes: 0
          +downVotes: 0
          +visibility: "visible             "
          +apId: "https://lemmy.world/comment/5315293"
          +editedAt: DateTimeImmutable @1700250907 {#4312
            date: 2023-11-17 20:55:07.0 +01:00
          }
          +createdAt: DateTimeImmutable @1700000189 {#4313
            date: 2023-11-14 23:16:29.0 +01:00
          }
        }
        +root: App\Entity\EntryComment {#4317}
        +body: "Thanks! While I may have nailed server-side decorations in that example, as you know, there is too much other stuff to take into account to make a DE actually functional. So, I respect a lot what KDE and GNOME do and the innovations they make. I actually want to create a macOS clone, hahaha. That is one of the reasons I started this project. I will soon continue working on a library for exposing global menus in Wayland/X11. Qt allows defining a custom platform plugin, enabling us to plug external systems for managing global menus. Sadly, I think GTK4 no longer supports that, so I believe an approach would be to display a standard menu with basic functions for apps that don’t support it."
        +lang: "en"
        +isAdult: false
        +favouriteCount: 8
        +score: 0
        +lastActive: DateTime @1700001847 {#4877
          date: 2023-11-14 23:44:07.0 +01:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@ehopperdietzel@lemmy.world"
          "@TCB13@lemmy.world"
        ]
        +children: Doctrine\ORM\PersistentCollection {#4880 …}
        +nested: Doctrine\ORM\PersistentCollection {#4882 …}
        +votes: Doctrine\ORM\PersistentCollection {#4884 …}
        +reports: Doctrine\ORM\PersistentCollection {#4886 …}
        +favourites: Doctrine\ORM\PersistentCollection {#4888 …}
        +notifications: Doctrine\ORM\PersistentCollection {#4890 …}
        -id: 125375
        -bodyTs: "'account':26 'actual':31,49 'allow':82 'app':122 'approach':110 'basic':119 'believ':108 'clone':55 'continu':70 'creat':52 'custom':85 'de':30 'decor':10 'defin':83 'display':114 'enabl':88 'exampl':13 'expos':76 'extern':92 'function':32,120 'global':77,96 'gnome':41 'gtk4':101 'hahaha':56 'innov':45 'kde':39 'know':16 'librari':74 'longer':103 'lot':37 'maco':54 'make':28,47 'manag':95 'may':4 'menu':117 'menus':78,97 'much':20 'nail':6 'one':59 'platform':86 'plug':91 'plugin':87 'project':66 'qt':81 'reason':62 'respect':35 'sad':98 'server':8 'server-sid':7 'side':9 'soon':69 'standard':116 'start':64 'stuff':22 'support':104,126 'system':93 'take':24 'thank':1 'think':100 'us':89 'want':50 'wayland/x11':80 'work':71 'would':111"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.world/comment/5315925"
        +editedAt: null
        +createdAt: DateTimeImmutable @1700001847 {#4878
          date: 2023-11-14 23:44:07.0 +01:00
        }
      }
      +root: App\Entity\EntryComment {#4317}
      +body: """
        Ohh, that’s cool. How far do you want to go with this? I had the idea of using a custom wayland protocol to make per-app global menus instead of per-window so you can have an app open without any windows, like on macOS, in the compositor I wanted to write. However writing a compositor using wlroots is still incredibly difficult if you have no prior experience so the whole thing didn’t get very far yet. If that’s something you want to do too, I’d be very interested in this.\n
        \n
        (Speaking of, why did you decide not to build this on top of wlroots?)
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 2
      +score: 0
      +lastActive: DateTime @1700006447 {#5021
        date: 2023-11-15 01:00:47.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
        "@TCB13@lemmy.world"
      ]
      +children: Doctrine\ORM\PersistentCollection {#5025 …}
      +nested: Doctrine\ORM\PersistentCollection {#5027 …}
      +votes: Doctrine\ORM\PersistentCollection {#5029 …}
      +reports: Doctrine\ORM\PersistentCollection {#5031 …}
      +favourites: Doctrine\ORM\PersistentCollection {#5033 …}
      +notifications: Doctrine\ORM\PersistentCollection {#5035 …}
      -id: 125596
      -bodyTs: "'app':28,41 'build':106 'compositor':51,59 'cool':4 'custom':21 'd':92 'decid':103 'didn':76 'difficult':65 'experi':71 'far':6,80 'get':78 'global':29 'go':11 'howev':56 'idea':17 'incred':64 'instead':31 'interest':95 'like':46 'maco':48 'make':25 'menus':30 'ohh':1 'open':42 'per':27,34 'per-app':26 'per-window':33 'prior':70 'protocol':23 'someth':85 'speak':98 'still':63 'thing':75 'top':109 'use':19,60 'want':9,53,87 'wayland':22 'whole':74 'window':35,45 'without':43 'wlroot':61,111 'write':55,57 'yet':81"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://discuss.tchncs.de/comment/4863983"
      +editedAt: null
      +createdAt: DateTimeImmutable @1700006447 {#5022
        date: 2023-11-15 01:00:47.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4317}
    +body: """
      I actually already created a library for that called Heaven ([github.com/CuarzoSoftware/Heaven](https://github.com/CuarzoSoftware/Heaven)), but I want to rewrite it to make it simpler and add backends for different IPC mechanisms (Unix domain sockets and D-Bus).\n
      \n
      It allows apps to create as many menu bars as they want. The idea is that when one of its toplevel windows is activated, it can notify the “topbar app” to display a specific menu bar. The compositor also informs the “topbar app” about the currently active client. So, it has three APIs: one for apps, another for the “topbar app,” and another for the compositor. Apps are identified by their PID.\n
      \n
      Now, with respect to the second question, a long time ago, I tried to create a compositor using QtWayland, which had the most documentation at that time. However, it had some problems with certain interfaces that made the compositor crash. So, I then looked for wlroots but could find no documentation whatsoever, so I decided to start from scratch. As time passed, I began to learn and understand how protocols work, realizing that one of the most challenging things was implementing protocols correctly, as there are too many interfaces that depend on each other, and you need to implement them all before you can see results and validate that it works. That’s why I decided to create this lib, even as my university thesis, with the focus of offering a default and basic implementation of each protocol so that developers can see a functional compositor from the start and then gradually and specifically override whatever they need, being able to validate each feature they add immediately. Of course, there are many other complicated things I had to learn, such as the DRM/KMS API, buffer sharing through DMA, among other stuff. I really appreciate wlroots, though. I learned a lot by analyzing its source code, and surely today I would be able to create a compositor with it, hahaha.
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 5
    +score: 0
    +lastActive: DateTime @1700008040 {#5090
      date: 2023-11-15 01:27:20.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@TCB13@lemmy.world"
      "@2xsaiko@discuss.tchncs.de"
    ]
    +children: Doctrine\ORM\PersistentCollection {#5093 …}
    +nested: Doctrine\ORM\PersistentCollection {#5095 …}
    +votes: Doctrine\ORM\PersistentCollection {#5097 …}
    +reports: Doctrine\ORM\PersistentCollection {#5099 …}
    +favourites: Doctrine\ORM\PersistentCollection {#5101 …}
    +notifications: Doctrine\ORM\PersistentCollection {#5103 …}
    -id: 125648
    -bodyTs: "'/cuarzosoftware/heaven](https://github.com/cuarzosoftware/heaven)),':13 'abl':269,321 'activ':61,84 'actual':2 'add':25,275 'ago':120 'allow':39 'alreadi':3 'also':76 'among':298 'analyz':311 'anoth':94,100 'api':90,293 'app':40,67,80,93,98,104 'appreci':303 'backend':26 'bar':46,73 'basic':243 'began':173 'buffer':294 'bus':37 'call':9 'certain':143 'challeng':187 'client':85 'code':314 'complic':283 'compositor':75,103,126,148,255,325 'correct':192 'could':157 'cours':278 'crash':149 'creat':4,42,124,227,323 'current':83 'd':36 'd-bus':35 'decid':164,225 'default':241 'depend':200 'develop':250 'differ':28 'display':69 'dma':297 'document':133,160 'domain':32 'drm/kms':292 'even':230 'featur':273 'find':158 'focus':237 'function':254 'github.com':12 'github.com/cuarzosoftware/heaven](https://github.com/cuarzosoftware/heaven)),':11 'gradual':261 'hahaha':328 'heaven':10 'howev':137 'idea':51 'identifi':106 'immedi':276 'implement':190,208,244 'inform':77 'interfac':144,198 'ipc':29 'learn':175,288,307 'lib':229 'librari':6 'long':118 'look':153 'lot':309 'made':146 'make':21 'mani':44,197,281 'mechan':30 'menu':45,72 'need':206,267 'notifi':64 'offer':239 'one':55,91,183 'overrid':264 'pass':171 'pid':109 'problem':141 'protocol':179,191,247 'qtwayland':128 'question':116 'realiz':181 'realli':302 'respect':112 'result':215 'rewrit':18 'scratch':168 'second':115 'see':214,252 'share':295 'simpler':23 'socket':33 'sourc':313 'specif':71,263 'start':166,258 'stuff':300 'sure':316 'thesi':234 'thing':188,284 'though':305 'three':89 'time':119,136,170 'today':317 'topbar':66,79,97 'toplevel':58 'tri':122 'understand':177 'univers':233 'unix':31 'use':127 'valid':217,271 'want':16,49 'whatev':265 'whatsoev':161 'window':59 'wlroot':155,304 'work':180,220 'would':319"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.world/comment/5318533"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700008040 {#5091
      date: 2023-11-15 01:27:20.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4317}
  +body: "Well that’s awesome. I’ll take a closer look at this in a couple days. Maybe even contribute if I have the time :P"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 3
  +score: 0
  +lastActive: DateTime @1700009135 {#5132
    date: 2023-11-15 01:45:35.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@TCB13@lemmy.world"
    "@2xsaiko@discuss.tchncs.de"
  ]
  +children: Doctrine\ORM\PersistentCollection {#5128 …}
  +nested: Doctrine\ORM\PersistentCollection {#5124 …}
  +votes: Doctrine\ORM\PersistentCollection {#5122 …}
  +reports: Doctrine\ORM\PersistentCollection {#5137 …}
  +favourites: Doctrine\ORM\PersistentCollection {#5139 …}
  +notifications: Doctrine\ORM\PersistentCollection {#5141 …}
  -id: 125687
  -bodyTs: "'awesom':4 'closer':9 'contribut':19 'coupl':15 'day':16 'even':18 'll':6 'look':10 'mayb':17 'p':25 'take':7 'time':24 'well':1"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://discuss.tchncs.de/comment/4865547"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700009135 {#5135
    date: 2023-11-15 01:45:35.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
69 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
70 DENIED moderate
App\Entity\EntryComment {#5158
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#5131
    +user: Proxies\__CG__\App\Entity\User {#5024 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#5092
      +user: Proxies\__CG__\App\Entity\User {#1970 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: App\Entity\EntryComment {#5023
        +user: Proxies\__CG__\App\Entity\User {#5024 …}
        +entry: App\Entity\Entry {#2419}
        +magazine: App\Entity\Magazine {#265}
        +image: null
        +parent: App\Entity\EntryComment {#4879
          +user: Proxies\__CG__\App\Entity\User {#1970 …}
          +entry: App\Entity\Entry {#2419}
          +magazine: App\Entity\Magazine {#265}
          +image: null
          +parent: App\Entity\EntryComment {#4317
            +user: App\Entity\User {#4330 …}
            +entry: App\Entity\Entry {#2419}
            +magazine: App\Entity\Magazine {#265}
            +image: null
            +parent: null
            +root: null
            +body: """
              Lets see if I got this right, you (the OP), the creator of Louvre, managed to create an example compositor that looks like a better desktop experience than the entire KDE and GNOME teams could ever develop with their infinite wisdom and funding? Fucking amazing. :)\n
              \n
              I know this is an example, but seriously following the “copy apple down to the last pixel” approach you should consider creating a DE for Linux that doesn’t have themes or any user tweaks, just a simple and pixel-perfect copy of macOS. The problem with GNOME and KDE is that they both fail in simple design principals such as proportions, item spacing and whatnot while Apple, and you by extension, excels in that aspect.\n
              \n
              Furthermore my personal opinion is that GNOME tries to reinvent everything and ends up fucking things up and creating situations like the lack of desktop icons going into the activities view by default etc. KDE however does some other stuff right but they fail really badly in terms of proportions and item spacing. Their taskbar is also a shame, for a group that says they want to copy Windows’ style they aren’t doing that well.\n
              \n
              Desktop experiences when it comes to design peaked with macOS Monterey (after that Apple did changes to the settings that are still not polished) and in terms of usability they peaked with the release of Exposé, Spaces and later their integration on Mission Control (initially bad but now they seem better).\n
              \n
              If you do create a 1:1 copy of macOS desktop experience (and keep it updates) as a new DE you’ll most likely become very popular in no time. It doesn’t need themes, customization and all the personalization that would make it really hard to create, just a simply pixel perfect copy of macOS.
              """
            +lang: "en"
            +isAdult: false
            +favouriteCount: 4
            +score: 0
            +lastActive: DateTime @1700263915 {#4311
              date: 2023-11-18 00:31:55.0 +01:00
            }
            +ip: null
            +tags: null
            +mentions: [
              "@ehopperdietzel@lemmy.world"
            ]
            +children: Doctrine\ORM\PersistentCollection {#4318 …}
            +nested: Doctrine\ORM\PersistentCollection {#4320 …}
            +votes: Doctrine\ORM\PersistentCollection {#4322 …}
            +reports: Doctrine\ORM\PersistentCollection {#4324 …}
            +favourites: Doctrine\ORM\PersistentCollection {#4326 …}
            +notifications: Doctrine\ORM\PersistentCollection {#4328 …}
            -id: 125250
            -bodyTs: "'1':255,256 'activ':152 'also':179 'amaz':45 'appl':57,114,212 'approach':63 'aren':194 'aspect':122 'bad':168,244 'becom':274 'better':25,249 'chang':214 'come':203 'compositor':20 'consid':66 'control':242 'copi':56,88,190,257,303 'could':35 'creat':17,67,141,253,297 'creator':12 'custom':285 'de':69,269 'default':155 'design':104,205 'desktop':26,147,199,260 'develop':37 'doesn':73,281 'end':135 'entir':30 'etc':156 'ever':36 'everyth':133 'exampl':19,51 'excel':119 'experi':27,200,261 'exposé':234 'extens':118 'fail':101,166 'follow':54 'fuck':44,137 'fund':43 'furthermor':123 'gnome':33,94,129 'go':149 'got':5 'group':184 'hard':295 'howev':158 'icon':148 'infinit':40 'initi':243 'integr':239 'item':109,174 'kde':31,96,157 'keep':263 'know':47 'lack':145 'last':61 'later':237 'let':1 'like':23,143,273 'linux':71 'll':271 'look':22 'louvr':14 'maco':90,208,259,305 'make':292 'manag':15 'mission':241 'monterey':209 'need':283 'new':268 'op':10 'opinion':126 'peak':206,229 'perfect':87,302 'person':125,289 'pixel':62,86,301 'pixel-perfect':85 'polish':222 'popular':276 'princip':105 'problem':92 'proport':108,172 'realli':167,294 'reinvent':132 'releas':232 'right':7,163 'say':186 'see':2 'seem':248 'serious':53 'set':217 'shame':181 'simpl':83,103 'simpli':300 'situat':142 'space':110,175,235 'still':220 'stuff':162 'style':192 'taskbar':177 'team':34 'term':170,225 'theme':76,284 'thing':138 'time':279 'tri':130 'tweak':80 'updat':265 'usabl':227 'user':79 'view':153 'want':188 'well':198 'whatnot':112 'window':191 'wisdom':41 'would':291"
            +ranking: 0
            +commentCount: 0
            +upVotes: 0
            +downVotes: 0
            +visibility: "visible             "
            +apId: "https://lemmy.world/comment/5315293"
            +editedAt: DateTimeImmutable @1700250907 {#4312
              date: 2023-11-17 20:55:07.0 +01:00
            }
            +createdAt: DateTimeImmutable @1700000189 {#4313
              date: 2023-11-14 23:16:29.0 +01:00
            }
          }
          +root: App\Entity\EntryComment {#4317}
          +body: "Thanks! While I may have nailed server-side decorations in that example, as you know, there is too much other stuff to take into account to make a DE actually functional. So, I respect a lot what KDE and GNOME do and the innovations they make. I actually want to create a macOS clone, hahaha. That is one of the reasons I started this project. I will soon continue working on a library for exposing global menus in Wayland/X11. Qt allows defining a custom platform plugin, enabling us to plug external systems for managing global menus. Sadly, I think GTK4 no longer supports that, so I believe an approach would be to display a standard menu with basic functions for apps that don’t support it."
          +lang: "en"
          +isAdult: false
          +favouriteCount: 8
          +score: 0
          +lastActive: DateTime @1700001847 {#4877
            date: 2023-11-14 23:44:07.0 +01:00
          }
          +ip: null
          +tags: null
          +mentions: [
            "@ehopperdietzel@lemmy.world"
            "@TCB13@lemmy.world"
          ]
          +children: Doctrine\ORM\PersistentCollection {#4880 …}
          +nested: Doctrine\ORM\PersistentCollection {#4882 …}
          +votes: Doctrine\ORM\PersistentCollection {#4884 …}
          +reports: Doctrine\ORM\PersistentCollection {#4886 …}
          +favourites: Doctrine\ORM\PersistentCollection {#4888 …}
          +notifications: Doctrine\ORM\PersistentCollection {#4890 …}
          -id: 125375
          -bodyTs: "'account':26 'actual':31,49 'allow':82 'app':122 'approach':110 'basic':119 'believ':108 'clone':55 'continu':70 'creat':52 'custom':85 'de':30 'decor':10 'defin':83 'display':114 'enabl':88 'exampl':13 'expos':76 'extern':92 'function':32,120 'global':77,96 'gnome':41 'gtk4':101 'hahaha':56 'innov':45 'kde':39 'know':16 'librari':74 'longer':103 'lot':37 'maco':54 'make':28,47 'manag':95 'may':4 'menu':117 'menus':78,97 'much':20 'nail':6 'one':59 'platform':86 'plug':91 'plugin':87 'project':66 'qt':81 'reason':62 'respect':35 'sad':98 'server':8 'server-sid':7 'side':9 'soon':69 'standard':116 'start':64 'stuff':22 'support':104,126 'system':93 'take':24 'thank':1 'think':100 'us':89 'want':50 'wayland/x11':80 'work':71 'would':111"
          +ranking: 0
          +commentCount: 0
          +upVotes: 0
          +downVotes: 0
          +visibility: "visible             "
          +apId: "https://lemmy.world/comment/5315925"
          +editedAt: null
          +createdAt: DateTimeImmutable @1700001847 {#4878
            date: 2023-11-14 23:44:07.0 +01:00
          }
        }
        +root: App\Entity\EntryComment {#4317}
        +body: """
          Ohh, that’s cool. How far do you want to go with this? I had the idea of using a custom wayland protocol to make per-app global menus instead of per-window so you can have an app open without any windows, like on macOS, in the compositor I wanted to write. However writing a compositor using wlroots is still incredibly difficult if you have no prior experience so the whole thing didn’t get very far yet. If that’s something you want to do too, I’d be very interested in this.\n
          \n
          (Speaking of, why did you decide not to build this on top of wlroots?)
          """
        +lang: "en"
        +isAdult: false
        +favouriteCount: 2
        +score: 0
        +lastActive: DateTime @1700006447 {#5021
          date: 2023-11-15 01:00:47.0 +01:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@ehopperdietzel@lemmy.world"
          "@TCB13@lemmy.world"
        ]
        +children: Doctrine\ORM\PersistentCollection {#5025 …}
        +nested: Doctrine\ORM\PersistentCollection {#5027 …}
        +votes: Doctrine\ORM\PersistentCollection {#5029 …}
        +reports: Doctrine\ORM\PersistentCollection {#5031 …}
        +favourites: Doctrine\ORM\PersistentCollection {#5033 …}
        +notifications: Doctrine\ORM\PersistentCollection {#5035 …}
        -id: 125596
        -bodyTs: "'app':28,41 'build':106 'compositor':51,59 'cool':4 'custom':21 'd':92 'decid':103 'didn':76 'difficult':65 'experi':71 'far':6,80 'get':78 'global':29 'go':11 'howev':56 'idea':17 'incred':64 'instead':31 'interest':95 'like':46 'maco':48 'make':25 'menus':30 'ohh':1 'open':42 'per':27,34 'per-app':26 'per-window':33 'prior':70 'protocol':23 'someth':85 'speak':98 'still':63 'thing':75 'top':109 'use':19,60 'want':9,53,87 'wayland':22 'whole':74 'window':35,45 'without':43 'wlroot':61,111 'write':55,57 'yet':81"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://discuss.tchncs.de/comment/4863983"
        +editedAt: null
        +createdAt: DateTimeImmutable @1700006447 {#5022
          date: 2023-11-15 01:00:47.0 +01:00
        }
      }
      +root: App\Entity\EntryComment {#4317}
      +body: """
        I actually already created a library for that called Heaven ([github.com/CuarzoSoftware/Heaven](https://github.com/CuarzoSoftware/Heaven)), but I want to rewrite it to make it simpler and add backends for different IPC mechanisms (Unix domain sockets and D-Bus).\n
        \n
        It allows apps to create as many menu bars as they want. The idea is that when one of its toplevel windows is activated, it can notify the “topbar app” to display a specific menu bar. The compositor also informs the “topbar app” about the currently active client. So, it has three APIs: one for apps, another for the “topbar app,” and another for the compositor. Apps are identified by their PID.\n
        \n
        Now, with respect to the second question, a long time ago, I tried to create a compositor using QtWayland, which had the most documentation at that time. However, it had some problems with certain interfaces that made the compositor crash. So, I then looked for wlroots but could find no documentation whatsoever, so I decided to start from scratch. As time passed, I began to learn and understand how protocols work, realizing that one of the most challenging things was implementing protocols correctly, as there are too many interfaces that depend on each other, and you need to implement them all before you can see results and validate that it works. That’s why I decided to create this lib, even as my university thesis, with the focus of offering a default and basic implementation of each protocol so that developers can see a functional compositor from the start and then gradually and specifically override whatever they need, being able to validate each feature they add immediately. Of course, there are many other complicated things I had to learn, such as the DRM/KMS API, buffer sharing through DMA, among other stuff. I really appreciate wlroots, though. I learned a lot by analyzing its source code, and surely today I would be able to create a compositor with it, hahaha.
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 5
      +score: 0
      +lastActive: DateTime @1700008040 {#5090
        date: 2023-11-15 01:27:20.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
        "@TCB13@lemmy.world"
        "@2xsaiko@discuss.tchncs.de"
      ]
      +children: Doctrine\ORM\PersistentCollection {#5093 …}
      +nested: Doctrine\ORM\PersistentCollection {#5095 …}
      +votes: Doctrine\ORM\PersistentCollection {#5097 …}
      +reports: Doctrine\ORM\PersistentCollection {#5099 …}
      +favourites: Doctrine\ORM\PersistentCollection {#5101 …}
      +notifications: Doctrine\ORM\PersistentCollection {#5103 …}
      -id: 125648
      -bodyTs: "'/cuarzosoftware/heaven](https://github.com/cuarzosoftware/heaven)),':13 'abl':269,321 'activ':61,84 'actual':2 'add':25,275 'ago':120 'allow':39 'alreadi':3 'also':76 'among':298 'analyz':311 'anoth':94,100 'api':90,293 'app':40,67,80,93,98,104 'appreci':303 'backend':26 'bar':46,73 'basic':243 'began':173 'buffer':294 'bus':37 'call':9 'certain':143 'challeng':187 'client':85 'code':314 'complic':283 'compositor':75,103,126,148,255,325 'correct':192 'could':157 'cours':278 'crash':149 'creat':4,42,124,227,323 'current':83 'd':36 'd-bus':35 'decid':164,225 'default':241 'depend':200 'develop':250 'differ':28 'display':69 'dma':297 'document':133,160 'domain':32 'drm/kms':292 'even':230 'featur':273 'find':158 'focus':237 'function':254 'github.com':12 'github.com/cuarzosoftware/heaven](https://github.com/cuarzosoftware/heaven)),':11 'gradual':261 'hahaha':328 'heaven':10 'howev':137 'idea':51 'identifi':106 'immedi':276 'implement':190,208,244 'inform':77 'interfac':144,198 'ipc':29 'learn':175,288,307 'lib':229 'librari':6 'long':118 'look':153 'lot':309 'made':146 'make':21 'mani':44,197,281 'mechan':30 'menu':45,72 'need':206,267 'notifi':64 'offer':239 'one':55,91,183 'overrid':264 'pass':171 'pid':109 'problem':141 'protocol':179,191,247 'qtwayland':128 'question':116 'realiz':181 'realli':302 'respect':112 'result':215 'rewrit':18 'scratch':168 'second':115 'see':214,252 'share':295 'simpler':23 'socket':33 'sourc':313 'specif':71,263 'start':166,258 'stuff':300 'sure':316 'thesi':234 'thing':188,284 'though':305 'three':89 'time':119,136,170 'today':317 'topbar':66,79,97 'toplevel':58 'tri':122 'understand':177 'univers':233 'unix':31 'use':127 'valid':217,271 'want':16,49 'whatev':265 'whatsoev':161 'window':59 'wlroot':155,304 'work':180,220 'would':319"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemmy.world/comment/5318533"
      +editedAt: null
      +createdAt: DateTimeImmutable @1700008040 {#5091
        date: 2023-11-15 01:27:20.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4317}
    +body: "Well that’s awesome. I’ll take a closer look at this in a couple days. Maybe even contribute if I have the time :P"
    +lang: "en"
    +isAdult: false
    +favouriteCount: 3
    +score: 0
    +lastActive: DateTime @1700009135 {#5132
      date: 2023-11-15 01:45:35.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@TCB13@lemmy.world"
      "@2xsaiko@discuss.tchncs.de"
    ]
    +children: Doctrine\ORM\PersistentCollection {#5128 …}
    +nested: Doctrine\ORM\PersistentCollection {#5124 …}
    +votes: Doctrine\ORM\PersistentCollection {#5122 …}
    +reports: Doctrine\ORM\PersistentCollection {#5137 …}
    +favourites: Doctrine\ORM\PersistentCollection {#5139 …}
    +notifications: Doctrine\ORM\PersistentCollection {#5141 …}
    -id: 125687
    -bodyTs: "'awesom':4 'closer':9 'contribut':19 'coupl':15 'day':16 'even':18 'll':6 'look':10 'mayb':17 'p':25 'take':7 'time':24 'well':1"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://discuss.tchncs.de/comment/4865547"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700009135 {#5135
      date: 2023-11-15 01:45:35.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4317}
  +body: "That would be great! 😀"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 1
  +score: 0
  +lastActive: DateTime @1700011964 {#5153
    date: 2023-11-15 02:32:44.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@TCB13@lemmy.world"
    "@2xsaiko@discuss.tchncs.de"
  ]
  +children: Doctrine\ORM\PersistentCollection {#5150 …}
  +nested: Doctrine\ORM\PersistentCollection {#5147 …}
  +votes: Doctrine\ORM\PersistentCollection {#5145 …}
  +reports: Doctrine\ORM\PersistentCollection {#5159 …}
  +favourites: Doctrine\ORM\PersistentCollection {#5161 …}
  +notifications: Doctrine\ORM\PersistentCollection {#5163 …}
  -id: 125803
  -bodyTs: "'great':4 'would':2"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5320581"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700011964 {#5156
    date: 2023-11-15 02:32:44.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
71 DENIED edit
App\Entity\EntryComment {#5158
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#5131
    +user: Proxies\__CG__\App\Entity\User {#5024 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#5092
      +user: Proxies\__CG__\App\Entity\User {#1970 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: App\Entity\EntryComment {#5023
        +user: Proxies\__CG__\App\Entity\User {#5024 …}
        +entry: App\Entity\Entry {#2419}
        +magazine: App\Entity\Magazine {#265}
        +image: null
        +parent: App\Entity\EntryComment {#4879
          +user: Proxies\__CG__\App\Entity\User {#1970 …}
          +entry: App\Entity\Entry {#2419}
          +magazine: App\Entity\Magazine {#265}
          +image: null
          +parent: App\Entity\EntryComment {#4317
            +user: App\Entity\User {#4330 …}
            +entry: App\Entity\Entry {#2419}
            +magazine: App\Entity\Magazine {#265}
            +image: null
            +parent: null
            +root: null
            +body: """
              Lets see if I got this right, you (the OP), the creator of Louvre, managed to create an example compositor that looks like a better desktop experience than the entire KDE and GNOME teams could ever develop with their infinite wisdom and funding? Fucking amazing. :)\n
              \n
              I know this is an example, but seriously following the “copy apple down to the last pixel” approach you should consider creating a DE for Linux that doesn’t have themes or any user tweaks, just a simple and pixel-perfect copy of macOS. The problem with GNOME and KDE is that they both fail in simple design principals such as proportions, item spacing and whatnot while Apple, and you by extension, excels in that aspect.\n
              \n
              Furthermore my personal opinion is that GNOME tries to reinvent everything and ends up fucking things up and creating situations like the lack of desktop icons going into the activities view by default etc. KDE however does some other stuff right but they fail really badly in terms of proportions and item spacing. Their taskbar is also a shame, for a group that says they want to copy Windows’ style they aren’t doing that well.\n
              \n
              Desktop experiences when it comes to design peaked with macOS Monterey (after that Apple did changes to the settings that are still not polished) and in terms of usability they peaked with the release of Exposé, Spaces and later their integration on Mission Control (initially bad but now they seem better).\n
              \n
              If you do create a 1:1 copy of macOS desktop experience (and keep it updates) as a new DE you’ll most likely become very popular in no time. It doesn’t need themes, customization and all the personalization that would make it really hard to create, just a simply pixel perfect copy of macOS.
              """
            +lang: "en"
            +isAdult: false
            +favouriteCount: 4
            +score: 0
            +lastActive: DateTime @1700263915 {#4311
              date: 2023-11-18 00:31:55.0 +01:00
            }
            +ip: null
            +tags: null
            +mentions: [
              "@ehopperdietzel@lemmy.world"
            ]
            +children: Doctrine\ORM\PersistentCollection {#4318 …}
            +nested: Doctrine\ORM\PersistentCollection {#4320 …}
            +votes: Doctrine\ORM\PersistentCollection {#4322 …}
            +reports: Doctrine\ORM\PersistentCollection {#4324 …}
            +favourites: Doctrine\ORM\PersistentCollection {#4326 …}
            +notifications: Doctrine\ORM\PersistentCollection {#4328 …}
            -id: 125250
            -bodyTs: "'1':255,256 'activ':152 'also':179 'amaz':45 'appl':57,114,212 'approach':63 'aren':194 'aspect':122 'bad':168,244 'becom':274 'better':25,249 'chang':214 'come':203 'compositor':20 'consid':66 'control':242 'copi':56,88,190,257,303 'could':35 'creat':17,67,141,253,297 'creator':12 'custom':285 'de':69,269 'default':155 'design':104,205 'desktop':26,147,199,260 'develop':37 'doesn':73,281 'end':135 'entir':30 'etc':156 'ever':36 'everyth':133 'exampl':19,51 'excel':119 'experi':27,200,261 'exposé':234 'extens':118 'fail':101,166 'follow':54 'fuck':44,137 'fund':43 'furthermor':123 'gnome':33,94,129 'go':149 'got':5 'group':184 'hard':295 'howev':158 'icon':148 'infinit':40 'initi':243 'integr':239 'item':109,174 'kde':31,96,157 'keep':263 'know':47 'lack':145 'last':61 'later':237 'let':1 'like':23,143,273 'linux':71 'll':271 'look':22 'louvr':14 'maco':90,208,259,305 'make':292 'manag':15 'mission':241 'monterey':209 'need':283 'new':268 'op':10 'opinion':126 'peak':206,229 'perfect':87,302 'person':125,289 'pixel':62,86,301 'pixel-perfect':85 'polish':222 'popular':276 'princip':105 'problem':92 'proport':108,172 'realli':167,294 'reinvent':132 'releas':232 'right':7,163 'say':186 'see':2 'seem':248 'serious':53 'set':217 'shame':181 'simpl':83,103 'simpli':300 'situat':142 'space':110,175,235 'still':220 'stuff':162 'style':192 'taskbar':177 'team':34 'term':170,225 'theme':76,284 'thing':138 'time':279 'tri':130 'tweak':80 'updat':265 'usabl':227 'user':79 'view':153 'want':188 'well':198 'whatnot':112 'window':191 'wisdom':41 'would':291"
            +ranking: 0
            +commentCount: 0
            +upVotes: 0
            +downVotes: 0
            +visibility: "visible             "
            +apId: "https://lemmy.world/comment/5315293"
            +editedAt: DateTimeImmutable @1700250907 {#4312
              date: 2023-11-17 20:55:07.0 +01:00
            }
            +createdAt: DateTimeImmutable @1700000189 {#4313
              date: 2023-11-14 23:16:29.0 +01:00
            }
          }
          +root: App\Entity\EntryComment {#4317}
          +body: "Thanks! While I may have nailed server-side decorations in that example, as you know, there is too much other stuff to take into account to make a DE actually functional. So, I respect a lot what KDE and GNOME do and the innovations they make. I actually want to create a macOS clone, hahaha. That is one of the reasons I started this project. I will soon continue working on a library for exposing global menus in Wayland/X11. Qt allows defining a custom platform plugin, enabling us to plug external systems for managing global menus. Sadly, I think GTK4 no longer supports that, so I believe an approach would be to display a standard menu with basic functions for apps that don’t support it."
          +lang: "en"
          +isAdult: false
          +favouriteCount: 8
          +score: 0
          +lastActive: DateTime @1700001847 {#4877
            date: 2023-11-14 23:44:07.0 +01:00
          }
          +ip: null
          +tags: null
          +mentions: [
            "@ehopperdietzel@lemmy.world"
            "@TCB13@lemmy.world"
          ]
          +children: Doctrine\ORM\PersistentCollection {#4880 …}
          +nested: Doctrine\ORM\PersistentCollection {#4882 …}
          +votes: Doctrine\ORM\PersistentCollection {#4884 …}
          +reports: Doctrine\ORM\PersistentCollection {#4886 …}
          +favourites: Doctrine\ORM\PersistentCollection {#4888 …}
          +notifications: Doctrine\ORM\PersistentCollection {#4890 …}
          -id: 125375
          -bodyTs: "'account':26 'actual':31,49 'allow':82 'app':122 'approach':110 'basic':119 'believ':108 'clone':55 'continu':70 'creat':52 'custom':85 'de':30 'decor':10 'defin':83 'display':114 'enabl':88 'exampl':13 'expos':76 'extern':92 'function':32,120 'global':77,96 'gnome':41 'gtk4':101 'hahaha':56 'innov':45 'kde':39 'know':16 'librari':74 'longer':103 'lot':37 'maco':54 'make':28,47 'manag':95 'may':4 'menu':117 'menus':78,97 'much':20 'nail':6 'one':59 'platform':86 'plug':91 'plugin':87 'project':66 'qt':81 'reason':62 'respect':35 'sad':98 'server':8 'server-sid':7 'side':9 'soon':69 'standard':116 'start':64 'stuff':22 'support':104,126 'system':93 'take':24 'thank':1 'think':100 'us':89 'want':50 'wayland/x11':80 'work':71 'would':111"
          +ranking: 0
          +commentCount: 0
          +upVotes: 0
          +downVotes: 0
          +visibility: "visible             "
          +apId: "https://lemmy.world/comment/5315925"
          +editedAt: null
          +createdAt: DateTimeImmutable @1700001847 {#4878
            date: 2023-11-14 23:44:07.0 +01:00
          }
        }
        +root: App\Entity\EntryComment {#4317}
        +body: """
          Ohh, that’s cool. How far do you want to go with this? I had the idea of using a custom wayland protocol to make per-app global menus instead of per-window so you can have an app open without any windows, like on macOS, in the compositor I wanted to write. However writing a compositor using wlroots is still incredibly difficult if you have no prior experience so the whole thing didn’t get very far yet. If that’s something you want to do too, I’d be very interested in this.\n
          \n
          (Speaking of, why did you decide not to build this on top of wlroots?)
          """
        +lang: "en"
        +isAdult: false
        +favouriteCount: 2
        +score: 0
        +lastActive: DateTime @1700006447 {#5021
          date: 2023-11-15 01:00:47.0 +01:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@ehopperdietzel@lemmy.world"
          "@TCB13@lemmy.world"
        ]
        +children: Doctrine\ORM\PersistentCollection {#5025 …}
        +nested: Doctrine\ORM\PersistentCollection {#5027 …}
        +votes: Doctrine\ORM\PersistentCollection {#5029 …}
        +reports: Doctrine\ORM\PersistentCollection {#5031 …}
        +favourites: Doctrine\ORM\PersistentCollection {#5033 …}
        +notifications: Doctrine\ORM\PersistentCollection {#5035 …}
        -id: 125596
        -bodyTs: "'app':28,41 'build':106 'compositor':51,59 'cool':4 'custom':21 'd':92 'decid':103 'didn':76 'difficult':65 'experi':71 'far':6,80 'get':78 'global':29 'go':11 'howev':56 'idea':17 'incred':64 'instead':31 'interest':95 'like':46 'maco':48 'make':25 'menus':30 'ohh':1 'open':42 'per':27,34 'per-app':26 'per-window':33 'prior':70 'protocol':23 'someth':85 'speak':98 'still':63 'thing':75 'top':109 'use':19,60 'want':9,53,87 'wayland':22 'whole':74 'window':35,45 'without':43 'wlroot':61,111 'write':55,57 'yet':81"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://discuss.tchncs.de/comment/4863983"
        +editedAt: null
        +createdAt: DateTimeImmutable @1700006447 {#5022
          date: 2023-11-15 01:00:47.0 +01:00
        }
      }
      +root: App\Entity\EntryComment {#4317}
      +body: """
        I actually already created a library for that called Heaven ([github.com/CuarzoSoftware/Heaven](https://github.com/CuarzoSoftware/Heaven)), but I want to rewrite it to make it simpler and add backends for different IPC mechanisms (Unix domain sockets and D-Bus).\n
        \n
        It allows apps to create as many menu bars as they want. The idea is that when one of its toplevel windows is activated, it can notify the “topbar app” to display a specific menu bar. The compositor also informs the “topbar app” about the currently active client. So, it has three APIs: one for apps, another for the “topbar app,” and another for the compositor. Apps are identified by their PID.\n
        \n
        Now, with respect to the second question, a long time ago, I tried to create a compositor using QtWayland, which had the most documentation at that time. However, it had some problems with certain interfaces that made the compositor crash. So, I then looked for wlroots but could find no documentation whatsoever, so I decided to start from scratch. As time passed, I began to learn and understand how protocols work, realizing that one of the most challenging things was implementing protocols correctly, as there are too many interfaces that depend on each other, and you need to implement them all before you can see results and validate that it works. That’s why I decided to create this lib, even as my university thesis, with the focus of offering a default and basic implementation of each protocol so that developers can see a functional compositor from the start and then gradually and specifically override whatever they need, being able to validate each feature they add immediately. Of course, there are many other complicated things I had to learn, such as the DRM/KMS API, buffer sharing through DMA, among other stuff. I really appreciate wlroots, though. I learned a lot by analyzing its source code, and surely today I would be able to create a compositor with it, hahaha.
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 5
      +score: 0
      +lastActive: DateTime @1700008040 {#5090
        date: 2023-11-15 01:27:20.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
        "@TCB13@lemmy.world"
        "@2xsaiko@discuss.tchncs.de"
      ]
      +children: Doctrine\ORM\PersistentCollection {#5093 …}
      +nested: Doctrine\ORM\PersistentCollection {#5095 …}
      +votes: Doctrine\ORM\PersistentCollection {#5097 …}
      +reports: Doctrine\ORM\PersistentCollection {#5099 …}
      +favourites: Doctrine\ORM\PersistentCollection {#5101 …}
      +notifications: Doctrine\ORM\PersistentCollection {#5103 …}
      -id: 125648
      -bodyTs: "'/cuarzosoftware/heaven](https://github.com/cuarzosoftware/heaven)),':13 'abl':269,321 'activ':61,84 'actual':2 'add':25,275 'ago':120 'allow':39 'alreadi':3 'also':76 'among':298 'analyz':311 'anoth':94,100 'api':90,293 'app':40,67,80,93,98,104 'appreci':303 'backend':26 'bar':46,73 'basic':243 'began':173 'buffer':294 'bus':37 'call':9 'certain':143 'challeng':187 'client':85 'code':314 'complic':283 'compositor':75,103,126,148,255,325 'correct':192 'could':157 'cours':278 'crash':149 'creat':4,42,124,227,323 'current':83 'd':36 'd-bus':35 'decid':164,225 'default':241 'depend':200 'develop':250 'differ':28 'display':69 'dma':297 'document':133,160 'domain':32 'drm/kms':292 'even':230 'featur':273 'find':158 'focus':237 'function':254 'github.com':12 'github.com/cuarzosoftware/heaven](https://github.com/cuarzosoftware/heaven)),':11 'gradual':261 'hahaha':328 'heaven':10 'howev':137 'idea':51 'identifi':106 'immedi':276 'implement':190,208,244 'inform':77 'interfac':144,198 'ipc':29 'learn':175,288,307 'lib':229 'librari':6 'long':118 'look':153 'lot':309 'made':146 'make':21 'mani':44,197,281 'mechan':30 'menu':45,72 'need':206,267 'notifi':64 'offer':239 'one':55,91,183 'overrid':264 'pass':171 'pid':109 'problem':141 'protocol':179,191,247 'qtwayland':128 'question':116 'realiz':181 'realli':302 'respect':112 'result':215 'rewrit':18 'scratch':168 'second':115 'see':214,252 'share':295 'simpler':23 'socket':33 'sourc':313 'specif':71,263 'start':166,258 'stuff':300 'sure':316 'thesi':234 'thing':188,284 'though':305 'three':89 'time':119,136,170 'today':317 'topbar':66,79,97 'toplevel':58 'tri':122 'understand':177 'univers':233 'unix':31 'use':127 'valid':217,271 'want':16,49 'whatev':265 'whatsoev':161 'window':59 'wlroot':155,304 'work':180,220 'would':319"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemmy.world/comment/5318533"
      +editedAt: null
      +createdAt: DateTimeImmutable @1700008040 {#5091
        date: 2023-11-15 01:27:20.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4317}
    +body: "Well that’s awesome. I’ll take a closer look at this in a couple days. Maybe even contribute if I have the time :P"
    +lang: "en"
    +isAdult: false
    +favouriteCount: 3
    +score: 0
    +lastActive: DateTime @1700009135 {#5132
      date: 2023-11-15 01:45:35.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@TCB13@lemmy.world"
      "@2xsaiko@discuss.tchncs.de"
    ]
    +children: Doctrine\ORM\PersistentCollection {#5128 …}
    +nested: Doctrine\ORM\PersistentCollection {#5124 …}
    +votes: Doctrine\ORM\PersistentCollection {#5122 …}
    +reports: Doctrine\ORM\PersistentCollection {#5137 …}
    +favourites: Doctrine\ORM\PersistentCollection {#5139 …}
    +notifications: Doctrine\ORM\PersistentCollection {#5141 …}
    -id: 125687
    -bodyTs: "'awesom':4 'closer':9 'contribut':19 'coupl':15 'day':16 'even':18 'll':6 'look':10 'mayb':17 'p':25 'take':7 'time':24 'well':1"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://discuss.tchncs.de/comment/4865547"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700009135 {#5135
      date: 2023-11-15 01:45:35.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4317}
  +body: "That would be great! 😀"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 1
  +score: 0
  +lastActive: DateTime @1700011964 {#5153
    date: 2023-11-15 02:32:44.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@TCB13@lemmy.world"
    "@2xsaiko@discuss.tchncs.de"
  ]
  +children: Doctrine\ORM\PersistentCollection {#5150 …}
  +nested: Doctrine\ORM\PersistentCollection {#5147 …}
  +votes: Doctrine\ORM\PersistentCollection {#5145 …}
  +reports: Doctrine\ORM\PersistentCollection {#5159 …}
  +favourites: Doctrine\ORM\PersistentCollection {#5161 …}
  +notifications: Doctrine\ORM\PersistentCollection {#5163 …}
  -id: 125803
  -bodyTs: "'great':4 'would':2"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5320581"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700011964 {#5156
    date: 2023-11-15 02:32:44.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
72 DENIED moderate
App\Entity\EntryComment {#5158
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#5131
    +user: Proxies\__CG__\App\Entity\User {#5024 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#5092
      +user: Proxies\__CG__\App\Entity\User {#1970 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: App\Entity\EntryComment {#5023
        +user: Proxies\__CG__\App\Entity\User {#5024 …}
        +entry: App\Entity\Entry {#2419}
        +magazine: App\Entity\Magazine {#265}
        +image: null
        +parent: App\Entity\EntryComment {#4879
          +user: Proxies\__CG__\App\Entity\User {#1970 …}
          +entry: App\Entity\Entry {#2419}
          +magazine: App\Entity\Magazine {#265}
          +image: null
          +parent: App\Entity\EntryComment {#4317
            +user: App\Entity\User {#4330 …}
            +entry: App\Entity\Entry {#2419}
            +magazine: App\Entity\Magazine {#265}
            +image: null
            +parent: null
            +root: null
            +body: """
              Lets see if I got this right, you (the OP), the creator of Louvre, managed to create an example compositor that looks like a better desktop experience than the entire KDE and GNOME teams could ever develop with their infinite wisdom and funding? Fucking amazing. :)\n
              \n
              I know this is an example, but seriously following the “copy apple down to the last pixel” approach you should consider creating a DE for Linux that doesn’t have themes or any user tweaks, just a simple and pixel-perfect copy of macOS. The problem with GNOME and KDE is that they both fail in simple design principals such as proportions, item spacing and whatnot while Apple, and you by extension, excels in that aspect.\n
              \n
              Furthermore my personal opinion is that GNOME tries to reinvent everything and ends up fucking things up and creating situations like the lack of desktop icons going into the activities view by default etc. KDE however does some other stuff right but they fail really badly in terms of proportions and item spacing. Their taskbar is also a shame, for a group that says they want to copy Windows’ style they aren’t doing that well.\n
              \n
              Desktop experiences when it comes to design peaked with macOS Monterey (after that Apple did changes to the settings that are still not polished) and in terms of usability they peaked with the release of Exposé, Spaces and later their integration on Mission Control (initially bad but now they seem better).\n
              \n
              If you do create a 1:1 copy of macOS desktop experience (and keep it updates) as a new DE you’ll most likely become very popular in no time. It doesn’t need themes, customization and all the personalization that would make it really hard to create, just a simply pixel perfect copy of macOS.
              """
            +lang: "en"
            +isAdult: false
            +favouriteCount: 4
            +score: 0
            +lastActive: DateTime @1700263915 {#4311
              date: 2023-11-18 00:31:55.0 +01:00
            }
            +ip: null
            +tags: null
            +mentions: [
              "@ehopperdietzel@lemmy.world"
            ]
            +children: Doctrine\ORM\PersistentCollection {#4318 …}
            +nested: Doctrine\ORM\PersistentCollection {#4320 …}
            +votes: Doctrine\ORM\PersistentCollection {#4322 …}
            +reports: Doctrine\ORM\PersistentCollection {#4324 …}
            +favourites: Doctrine\ORM\PersistentCollection {#4326 …}
            +notifications: Doctrine\ORM\PersistentCollection {#4328 …}
            -id: 125250
            -bodyTs: "'1':255,256 'activ':152 'also':179 'amaz':45 'appl':57,114,212 'approach':63 'aren':194 'aspect':122 'bad':168,244 'becom':274 'better':25,249 'chang':214 'come':203 'compositor':20 'consid':66 'control':242 'copi':56,88,190,257,303 'could':35 'creat':17,67,141,253,297 'creator':12 'custom':285 'de':69,269 'default':155 'design':104,205 'desktop':26,147,199,260 'develop':37 'doesn':73,281 'end':135 'entir':30 'etc':156 'ever':36 'everyth':133 'exampl':19,51 'excel':119 'experi':27,200,261 'exposé':234 'extens':118 'fail':101,166 'follow':54 'fuck':44,137 'fund':43 'furthermor':123 'gnome':33,94,129 'go':149 'got':5 'group':184 'hard':295 'howev':158 'icon':148 'infinit':40 'initi':243 'integr':239 'item':109,174 'kde':31,96,157 'keep':263 'know':47 'lack':145 'last':61 'later':237 'let':1 'like':23,143,273 'linux':71 'll':271 'look':22 'louvr':14 'maco':90,208,259,305 'make':292 'manag':15 'mission':241 'monterey':209 'need':283 'new':268 'op':10 'opinion':126 'peak':206,229 'perfect':87,302 'person':125,289 'pixel':62,86,301 'pixel-perfect':85 'polish':222 'popular':276 'princip':105 'problem':92 'proport':108,172 'realli':167,294 'reinvent':132 'releas':232 'right':7,163 'say':186 'see':2 'seem':248 'serious':53 'set':217 'shame':181 'simpl':83,103 'simpli':300 'situat':142 'space':110,175,235 'still':220 'stuff':162 'style':192 'taskbar':177 'team':34 'term':170,225 'theme':76,284 'thing':138 'time':279 'tri':130 'tweak':80 'updat':265 'usabl':227 'user':79 'view':153 'want':188 'well':198 'whatnot':112 'window':191 'wisdom':41 'would':291"
            +ranking: 0
            +commentCount: 0
            +upVotes: 0
            +downVotes: 0
            +visibility: "visible             "
            +apId: "https://lemmy.world/comment/5315293"
            +editedAt: DateTimeImmutable @1700250907 {#4312
              date: 2023-11-17 20:55:07.0 +01:00
            }
            +createdAt: DateTimeImmutable @1700000189 {#4313
              date: 2023-11-14 23:16:29.0 +01:00
            }
          }
          +root: App\Entity\EntryComment {#4317}
          +body: "Thanks! While I may have nailed server-side decorations in that example, as you know, there is too much other stuff to take into account to make a DE actually functional. So, I respect a lot what KDE and GNOME do and the innovations they make. I actually want to create a macOS clone, hahaha. That is one of the reasons I started this project. I will soon continue working on a library for exposing global menus in Wayland/X11. Qt allows defining a custom platform plugin, enabling us to plug external systems for managing global menus. Sadly, I think GTK4 no longer supports that, so I believe an approach would be to display a standard menu with basic functions for apps that don’t support it."
          +lang: "en"
          +isAdult: false
          +favouriteCount: 8
          +score: 0
          +lastActive: DateTime @1700001847 {#4877
            date: 2023-11-14 23:44:07.0 +01:00
          }
          +ip: null
          +tags: null
          +mentions: [
            "@ehopperdietzel@lemmy.world"
            "@TCB13@lemmy.world"
          ]
          +children: Doctrine\ORM\PersistentCollection {#4880 …}
          +nested: Doctrine\ORM\PersistentCollection {#4882 …}
          +votes: Doctrine\ORM\PersistentCollection {#4884 …}
          +reports: Doctrine\ORM\PersistentCollection {#4886 …}
          +favourites: Doctrine\ORM\PersistentCollection {#4888 …}
          +notifications: Doctrine\ORM\PersistentCollection {#4890 …}
          -id: 125375
          -bodyTs: "'account':26 'actual':31,49 'allow':82 'app':122 'approach':110 'basic':119 'believ':108 'clone':55 'continu':70 'creat':52 'custom':85 'de':30 'decor':10 'defin':83 'display':114 'enabl':88 'exampl':13 'expos':76 'extern':92 'function':32,120 'global':77,96 'gnome':41 'gtk4':101 'hahaha':56 'innov':45 'kde':39 'know':16 'librari':74 'longer':103 'lot':37 'maco':54 'make':28,47 'manag':95 'may':4 'menu':117 'menus':78,97 'much':20 'nail':6 'one':59 'platform':86 'plug':91 'plugin':87 'project':66 'qt':81 'reason':62 'respect':35 'sad':98 'server':8 'server-sid':7 'side':9 'soon':69 'standard':116 'start':64 'stuff':22 'support':104,126 'system':93 'take':24 'thank':1 'think':100 'us':89 'want':50 'wayland/x11':80 'work':71 'would':111"
          +ranking: 0
          +commentCount: 0
          +upVotes: 0
          +downVotes: 0
          +visibility: "visible             "
          +apId: "https://lemmy.world/comment/5315925"
          +editedAt: null
          +createdAt: DateTimeImmutable @1700001847 {#4878
            date: 2023-11-14 23:44:07.0 +01:00
          }
        }
        +root: App\Entity\EntryComment {#4317}
        +body: """
          Ohh, that’s cool. How far do you want to go with this? I had the idea of using a custom wayland protocol to make per-app global menus instead of per-window so you can have an app open without any windows, like on macOS, in the compositor I wanted to write. However writing a compositor using wlroots is still incredibly difficult if you have no prior experience so the whole thing didn’t get very far yet. If that’s something you want to do too, I’d be very interested in this.\n
          \n
          (Speaking of, why did you decide not to build this on top of wlroots?)
          """
        +lang: "en"
        +isAdult: false
        +favouriteCount: 2
        +score: 0
        +lastActive: DateTime @1700006447 {#5021
          date: 2023-11-15 01:00:47.0 +01:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@ehopperdietzel@lemmy.world"
          "@TCB13@lemmy.world"
        ]
        +children: Doctrine\ORM\PersistentCollection {#5025 …}
        +nested: Doctrine\ORM\PersistentCollection {#5027 …}
        +votes: Doctrine\ORM\PersistentCollection {#5029 …}
        +reports: Doctrine\ORM\PersistentCollection {#5031 …}
        +favourites: Doctrine\ORM\PersistentCollection {#5033 …}
        +notifications: Doctrine\ORM\PersistentCollection {#5035 …}
        -id: 125596
        -bodyTs: "'app':28,41 'build':106 'compositor':51,59 'cool':4 'custom':21 'd':92 'decid':103 'didn':76 'difficult':65 'experi':71 'far':6,80 'get':78 'global':29 'go':11 'howev':56 'idea':17 'incred':64 'instead':31 'interest':95 'like':46 'maco':48 'make':25 'menus':30 'ohh':1 'open':42 'per':27,34 'per-app':26 'per-window':33 'prior':70 'protocol':23 'someth':85 'speak':98 'still':63 'thing':75 'top':109 'use':19,60 'want':9,53,87 'wayland':22 'whole':74 'window':35,45 'without':43 'wlroot':61,111 'write':55,57 'yet':81"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://discuss.tchncs.de/comment/4863983"
        +editedAt: null
        +createdAt: DateTimeImmutable @1700006447 {#5022
          date: 2023-11-15 01:00:47.0 +01:00
        }
      }
      +root: App\Entity\EntryComment {#4317}
      +body: """
        I actually already created a library for that called Heaven ([github.com/CuarzoSoftware/Heaven](https://github.com/CuarzoSoftware/Heaven)), but I want to rewrite it to make it simpler and add backends for different IPC mechanisms (Unix domain sockets and D-Bus).\n
        \n
        It allows apps to create as many menu bars as they want. The idea is that when one of its toplevel windows is activated, it can notify the “topbar app” to display a specific menu bar. The compositor also informs the “topbar app” about the currently active client. So, it has three APIs: one for apps, another for the “topbar app,” and another for the compositor. Apps are identified by their PID.\n
        \n
        Now, with respect to the second question, a long time ago, I tried to create a compositor using QtWayland, which had the most documentation at that time. However, it had some problems with certain interfaces that made the compositor crash. So, I then looked for wlroots but could find no documentation whatsoever, so I decided to start from scratch. As time passed, I began to learn and understand how protocols work, realizing that one of the most challenging things was implementing protocols correctly, as there are too many interfaces that depend on each other, and you need to implement them all before you can see results and validate that it works. That’s why I decided to create this lib, even as my university thesis, with the focus of offering a default and basic implementation of each protocol so that developers can see a functional compositor from the start and then gradually and specifically override whatever they need, being able to validate each feature they add immediately. Of course, there are many other complicated things I had to learn, such as the DRM/KMS API, buffer sharing through DMA, among other stuff. I really appreciate wlroots, though. I learned a lot by analyzing its source code, and surely today I would be able to create a compositor with it, hahaha.
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 5
      +score: 0
      +lastActive: DateTime @1700008040 {#5090
        date: 2023-11-15 01:27:20.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
        "@TCB13@lemmy.world"
        "@2xsaiko@discuss.tchncs.de"
      ]
      +children: Doctrine\ORM\PersistentCollection {#5093 …}
      +nested: Doctrine\ORM\PersistentCollection {#5095 …}
      +votes: Doctrine\ORM\PersistentCollection {#5097 …}
      +reports: Doctrine\ORM\PersistentCollection {#5099 …}
      +favourites: Doctrine\ORM\PersistentCollection {#5101 …}
      +notifications: Doctrine\ORM\PersistentCollection {#5103 …}
      -id: 125648
      -bodyTs: "'/cuarzosoftware/heaven](https://github.com/cuarzosoftware/heaven)),':13 'abl':269,321 'activ':61,84 'actual':2 'add':25,275 'ago':120 'allow':39 'alreadi':3 'also':76 'among':298 'analyz':311 'anoth':94,100 'api':90,293 'app':40,67,80,93,98,104 'appreci':303 'backend':26 'bar':46,73 'basic':243 'began':173 'buffer':294 'bus':37 'call':9 'certain':143 'challeng':187 'client':85 'code':314 'complic':283 'compositor':75,103,126,148,255,325 'correct':192 'could':157 'cours':278 'crash':149 'creat':4,42,124,227,323 'current':83 'd':36 'd-bus':35 'decid':164,225 'default':241 'depend':200 'develop':250 'differ':28 'display':69 'dma':297 'document':133,160 'domain':32 'drm/kms':292 'even':230 'featur':273 'find':158 'focus':237 'function':254 'github.com':12 'github.com/cuarzosoftware/heaven](https://github.com/cuarzosoftware/heaven)),':11 'gradual':261 'hahaha':328 'heaven':10 'howev':137 'idea':51 'identifi':106 'immedi':276 'implement':190,208,244 'inform':77 'interfac':144,198 'ipc':29 'learn':175,288,307 'lib':229 'librari':6 'long':118 'look':153 'lot':309 'made':146 'make':21 'mani':44,197,281 'mechan':30 'menu':45,72 'need':206,267 'notifi':64 'offer':239 'one':55,91,183 'overrid':264 'pass':171 'pid':109 'problem':141 'protocol':179,191,247 'qtwayland':128 'question':116 'realiz':181 'realli':302 'respect':112 'result':215 'rewrit':18 'scratch':168 'second':115 'see':214,252 'share':295 'simpler':23 'socket':33 'sourc':313 'specif':71,263 'start':166,258 'stuff':300 'sure':316 'thesi':234 'thing':188,284 'though':305 'three':89 'time':119,136,170 'today':317 'topbar':66,79,97 'toplevel':58 'tri':122 'understand':177 'univers':233 'unix':31 'use':127 'valid':217,271 'want':16,49 'whatev':265 'whatsoev':161 'window':59 'wlroot':155,304 'work':180,220 'would':319"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemmy.world/comment/5318533"
      +editedAt: null
      +createdAt: DateTimeImmutable @1700008040 {#5091
        date: 2023-11-15 01:27:20.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4317}
    +body: "Well that’s awesome. I’ll take a closer look at this in a couple days. Maybe even contribute if I have the time :P"
    +lang: "en"
    +isAdult: false
    +favouriteCount: 3
    +score: 0
    +lastActive: DateTime @1700009135 {#5132
      date: 2023-11-15 01:45:35.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@TCB13@lemmy.world"
      "@2xsaiko@discuss.tchncs.de"
    ]
    +children: Doctrine\ORM\PersistentCollection {#5128 …}
    +nested: Doctrine\ORM\PersistentCollection {#5124 …}
    +votes: Doctrine\ORM\PersistentCollection {#5122 …}
    +reports: Doctrine\ORM\PersistentCollection {#5137 …}
    +favourites: Doctrine\ORM\PersistentCollection {#5139 …}
    +notifications: Doctrine\ORM\PersistentCollection {#5141 …}
    -id: 125687
    -bodyTs: "'awesom':4 'closer':9 'contribut':19 'coupl':15 'day':16 'even':18 'll':6 'look':10 'mayb':17 'p':25 'take':7 'time':24 'well':1"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://discuss.tchncs.de/comment/4865547"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700009135 {#5135
      date: 2023-11-15 01:45:35.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4317}
  +body: "That would be great! 😀"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 1
  +score: 0
  +lastActive: DateTime @1700011964 {#5153
    date: 2023-11-15 02:32:44.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@TCB13@lemmy.world"
    "@2xsaiko@discuss.tchncs.de"
  ]
  +children: Doctrine\ORM\PersistentCollection {#5150 …}
  +nested: Doctrine\ORM\PersistentCollection {#5147 …}
  +votes: Doctrine\ORM\PersistentCollection {#5145 …}
  +reports: Doctrine\ORM\PersistentCollection {#5159 …}
  +favourites: Doctrine\ORM\PersistentCollection {#5161 …}
  +notifications: Doctrine\ORM\PersistentCollection {#5163 …}
  -id: 125803
  -bodyTs: "'great':4 'would':2"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5320581"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700011964 {#5156
    date: 2023-11-15 02:32:44.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
73 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
74 DENIED moderate
App\Entity\EntryComment {#4392
  +user: App\Entity\User {#4405 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: null
  +root: null
  +body: """
    Do you plan to use vulkan wmi in any way?\n
    \n
    Can xwayland be excluded?
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 2
  +score: 0
  +lastActive: DateTime @1700255001 {#4387
    date: 2023-11-17 22:03:21.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4393 …}
  +nested: Doctrine\ORM\PersistentCollection {#4395 …}
  +votes: Doctrine\ORM\PersistentCollection {#4397 …}
  +reports: Doctrine\ORM\PersistentCollection {#4399 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4401 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4403 …}
  -id: 125040
  -bodyTs: "'exclud':14 'plan':3 'use':5 'vulkan':6 'way':10 'wmi':7 'xwayland':12"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.ml/comment/5801141"
  +editedAt: null
  +createdAt: DateTimeImmutable @1699996291 {#4388
    date: 2023-11-14 22:11:31.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
75 DENIED edit
App\Entity\EntryComment {#4392
  +user: App\Entity\User {#4405 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: null
  +root: null
  +body: """
    Do you plan to use vulkan wmi in any way?\n
    \n
    Can xwayland be excluded?
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 2
  +score: 0
  +lastActive: DateTime @1700255001 {#4387
    date: 2023-11-17 22:03:21.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4393 …}
  +nested: Doctrine\ORM\PersistentCollection {#4395 …}
  +votes: Doctrine\ORM\PersistentCollection {#4397 …}
  +reports: Doctrine\ORM\PersistentCollection {#4399 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4401 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4403 …}
  -id: 125040
  -bodyTs: "'exclud':14 'plan':3 'use':5 'vulkan':6 'way':10 'wmi':7 'xwayland':12"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.ml/comment/5801141"
  +editedAt: null
  +createdAt: DateTimeImmutable @1699996291 {#4388
    date: 2023-11-14 22:11:31.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
76 DENIED moderate
App\Entity\EntryComment {#4392
  +user: App\Entity\User {#4405 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: null
  +root: null
  +body: """
    Do you plan to use vulkan wmi in any way?\n
    \n
    Can xwayland be excluded?
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 2
  +score: 0
  +lastActive: DateTime @1700255001 {#4387
    date: 2023-11-17 22:03:21.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4393 …}
  +nested: Doctrine\ORM\PersistentCollection {#4395 …}
  +votes: Doctrine\ORM\PersistentCollection {#4397 …}
  +reports: Doctrine\ORM\PersistentCollection {#4399 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4401 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4403 …}
  -id: 125040
  -bodyTs: "'exclud':14 'plan':3 'use':5 'vulkan':6 'way':10 'wmi':7 'xwayland':12"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.ml/comment/5801141"
  +editedAt: null
  +createdAt: DateTimeImmutable @1699996291 {#4388
    date: 2023-11-14 22:11:31.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
77 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
78 DENIED moderate
App\Entity\EntryComment {#4864
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4392
    +user: App\Entity\User {#4405 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: """
      Do you plan to use vulkan wmi in any way?\n
      \n
      Can xwayland be excluded?
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 2
    +score: 0
    +lastActive: DateTime @1700255001 {#4387
      date: 2023-11-17 22:03:21.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4393 …}
    +nested: Doctrine\ORM\PersistentCollection {#4395 …}
    +votes: Doctrine\ORM\PersistentCollection {#4397 …}
    +reports: Doctrine\ORM\PersistentCollection {#4399 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4401 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4403 …}
    -id: 125040
    -bodyTs: "'exclud':14 'plan':3 'use':5 'vulkan':6 'way':10 'wmi':7 'xwayland':12"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.ml/comment/5801141"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699996291 {#4388
      date: 2023-11-14 22:11:31.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4392}
  +body: """
    Honestly, I haven’t explored Vulkan yet. I initially chose GLES 2.0 as the primary renderer to ensure compatibility with a wide range of hardware. Introducing Vulkan myself would be a time-consuming task unless I receive assistance.\n
    \n
    Regarding XWayland, Louvre doesn’t currently support it, so it’s naturally excluded. Well, it technically can run in rootful mode, but that is somewhat pointless. To enable independent window management, I believe I would need to create a mini X server, a task I haven’t tackled as of now.
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 4
  +score: 0
  +lastActive: DateTime @1699997407 {#4861
    date: 2023-11-14 22:30:07.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@ijhoo@lemmy.ml"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4865 …}
  +nested: Doctrine\ORM\PersistentCollection {#4867 …}
  +votes: Doctrine\ORM\PersistentCollection {#4869 …}
  +reports: Doctrine\ORM\PersistentCollection {#4871 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4873 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4875 …}
  -id: 125092
  -bodyTs: "'2.0':12 'assist':39 'believ':72 'chose':10 'compat':19 'consum':34 'creat':77 'current':45 'doesn':43 'enabl':67 'ensur':18 'exclud':52 'explor':5 'gles':11 'hardwar':25 'haven':3,85 'honest':1 'independ':68 'initi':9 'introduc':26 'louvr':42 'manag':70 'mini':79 'mode':60 'natur':51 'need':75 'pointless':65 'primari':15 'rang':23 'receiv':38 'regard':40 'render':16 'root':59 'run':57 'server':81 'somewhat':64 'support':46 'tackl':87 'task':35,83 'technic':55 'time':33 'time-consum':32 'unless':36 'vulkan':6,27 'well':53 'wide':22 'window':69 'would':29,74 'x':80 'xwayland':41 'yet':7"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5314364"
  +editedAt: DateTimeImmutable @1700246710 {#4862
    date: 2023-11-17 19:45:10.0 +01:00
  }
  +createdAt: DateTimeImmutable @1699997407 {#4863
    date: 2023-11-14 22:30:07.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
79 DENIED edit
App\Entity\EntryComment {#4864
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4392
    +user: App\Entity\User {#4405 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: """
      Do you plan to use vulkan wmi in any way?\n
      \n
      Can xwayland be excluded?
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 2
    +score: 0
    +lastActive: DateTime @1700255001 {#4387
      date: 2023-11-17 22:03:21.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4393 …}
    +nested: Doctrine\ORM\PersistentCollection {#4395 …}
    +votes: Doctrine\ORM\PersistentCollection {#4397 …}
    +reports: Doctrine\ORM\PersistentCollection {#4399 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4401 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4403 …}
    -id: 125040
    -bodyTs: "'exclud':14 'plan':3 'use':5 'vulkan':6 'way':10 'wmi':7 'xwayland':12"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.ml/comment/5801141"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699996291 {#4388
      date: 2023-11-14 22:11:31.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4392}
  +body: """
    Honestly, I haven’t explored Vulkan yet. I initially chose GLES 2.0 as the primary renderer to ensure compatibility with a wide range of hardware. Introducing Vulkan myself would be a time-consuming task unless I receive assistance.\n
    \n
    Regarding XWayland, Louvre doesn’t currently support it, so it’s naturally excluded. Well, it technically can run in rootful mode, but that is somewhat pointless. To enable independent window management, I believe I would need to create a mini X server, a task I haven’t tackled as of now.
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 4
  +score: 0
  +lastActive: DateTime @1699997407 {#4861
    date: 2023-11-14 22:30:07.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@ijhoo@lemmy.ml"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4865 …}
  +nested: Doctrine\ORM\PersistentCollection {#4867 …}
  +votes: Doctrine\ORM\PersistentCollection {#4869 …}
  +reports: Doctrine\ORM\PersistentCollection {#4871 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4873 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4875 …}
  -id: 125092
  -bodyTs: "'2.0':12 'assist':39 'believ':72 'chose':10 'compat':19 'consum':34 'creat':77 'current':45 'doesn':43 'enabl':67 'ensur':18 'exclud':52 'explor':5 'gles':11 'hardwar':25 'haven':3,85 'honest':1 'independ':68 'initi':9 'introduc':26 'louvr':42 'manag':70 'mini':79 'mode':60 'natur':51 'need':75 'pointless':65 'primari':15 'rang':23 'receiv':38 'regard':40 'render':16 'root':59 'run':57 'server':81 'somewhat':64 'support':46 'tackl':87 'task':35,83 'technic':55 'time':33 'time-consum':32 'unless':36 'vulkan':6,27 'well':53 'wide':22 'window':69 'would':29,74 'x':80 'xwayland':41 'yet':7"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5314364"
  +editedAt: DateTimeImmutable @1700246710 {#4862
    date: 2023-11-17 19:45:10.0 +01:00
  }
  +createdAt: DateTimeImmutable @1699997407 {#4863
    date: 2023-11-14 22:30:07.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
80 DENIED moderate
App\Entity\EntryComment {#4864
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4392
    +user: App\Entity\User {#4405 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: """
      Do you plan to use vulkan wmi in any way?\n
      \n
      Can xwayland be excluded?
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 2
    +score: 0
    +lastActive: DateTime @1700255001 {#4387
      date: 2023-11-17 22:03:21.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4393 …}
    +nested: Doctrine\ORM\PersistentCollection {#4395 …}
    +votes: Doctrine\ORM\PersistentCollection {#4397 …}
    +reports: Doctrine\ORM\PersistentCollection {#4399 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4401 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4403 …}
    -id: 125040
    -bodyTs: "'exclud':14 'plan':3 'use':5 'vulkan':6 'way':10 'wmi':7 'xwayland':12"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.ml/comment/5801141"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699996291 {#4388
      date: 2023-11-14 22:11:31.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4392}
  +body: """
    Honestly, I haven’t explored Vulkan yet. I initially chose GLES 2.0 as the primary renderer to ensure compatibility with a wide range of hardware. Introducing Vulkan myself would be a time-consuming task unless I receive assistance.\n
    \n
    Regarding XWayland, Louvre doesn’t currently support it, so it’s naturally excluded. Well, it technically can run in rootful mode, but that is somewhat pointless. To enable independent window management, I believe I would need to create a mini X server, a task I haven’t tackled as of now.
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 4
  +score: 0
  +lastActive: DateTime @1699997407 {#4861
    date: 2023-11-14 22:30:07.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@ijhoo@lemmy.ml"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4865 …}
  +nested: Doctrine\ORM\PersistentCollection {#4867 …}
  +votes: Doctrine\ORM\PersistentCollection {#4869 …}
  +reports: Doctrine\ORM\PersistentCollection {#4871 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4873 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4875 …}
  -id: 125092
  -bodyTs: "'2.0':12 'assist':39 'believ':72 'chose':10 'compat':19 'consum':34 'creat':77 'current':45 'doesn':43 'enabl':67 'ensur':18 'exclud':52 'explor':5 'gles':11 'hardwar':25 'haven':3,85 'honest':1 'independ':68 'initi':9 'introduc':26 'louvr':42 'manag':70 'mini':79 'mode':60 'natur':51 'need':75 'pointless':65 'primari':15 'rang':23 'receiv':38 'regard':40 'render':16 'root':59 'run':57 'server':81 'somewhat':64 'support':46 'tackl':87 'task':35,83 'technic':55 'time':33 'time-consum':32 'unless':36 'vulkan':6,27 'well':53 'wide':22 'window':69 'would':29,74 'x':80 'xwayland':41 'yet':7"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5314364"
  +editedAt: DateTimeImmutable @1700246710 {#4862
    date: 2023-11-17 19:45:10.0 +01:00
  }
  +createdAt: DateTimeImmutable @1699997407 {#4863
    date: 2023-11-14 22:30:07.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
81 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
82 DENIED moderate
App\Entity\EntryComment {#4978
  +user: App\Entity\User {#4405 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4864
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#4392
      +user: App\Entity\User {#4405 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: null
      +root: null
      +body: """
        Do you plan to use vulkan wmi in any way?\n
        \n
        Can xwayland be excluded?
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 2
      +score: 0
      +lastActive: DateTime @1700255001 {#4387
        date: 2023-11-17 22:03:21.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4393 …}
      +nested: Doctrine\ORM\PersistentCollection {#4395 …}
      +votes: Doctrine\ORM\PersistentCollection {#4397 …}
      +reports: Doctrine\ORM\PersistentCollection {#4399 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4401 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4403 …}
      -id: 125040
      -bodyTs: "'exclud':14 'plan':3 'use':5 'vulkan':6 'way':10 'wmi':7 'xwayland':12"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemmy.ml/comment/5801141"
      +editedAt: null
      +createdAt: DateTimeImmutable @1699996291 {#4388
        date: 2023-11-14 22:11:31.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4392}
    +body: """
      Honestly, I haven’t explored Vulkan yet. I initially chose GLES 2.0 as the primary renderer to ensure compatibility with a wide range of hardware. Introducing Vulkan myself would be a time-consuming task unless I receive assistance.\n
      \n
      Regarding XWayland, Louvre doesn’t currently support it, so it’s naturally excluded. Well, it technically can run in rootful mode, but that is somewhat pointless. To enable independent window management, I believe I would need to create a mini X server, a task I haven’t tackled as of now.
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 4
    +score: 0
    +lastActive: DateTime @1699997407 {#4861
      date: 2023-11-14 22:30:07.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@ijhoo@lemmy.ml"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4865 …}
    +nested: Doctrine\ORM\PersistentCollection {#4867 …}
    +votes: Doctrine\ORM\PersistentCollection {#4869 …}
    +reports: Doctrine\ORM\PersistentCollection {#4871 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4873 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4875 …}
    -id: 125092
    -bodyTs: "'2.0':12 'assist':39 'believ':72 'chose':10 'compat':19 'consum':34 'creat':77 'current':45 'doesn':43 'enabl':67 'ensur':18 'exclud':52 'explor':5 'gles':11 'hardwar':25 'haven':3,85 'honest':1 'independ':68 'initi':9 'introduc':26 'louvr':42 'manag':70 'mini':79 'mode':60 'natur':51 'need':75 'pointless':65 'primari':15 'rang':23 'receiv':38 'regard':40 'render':16 'root':59 'run':57 'server':81 'somewhat':64 'support':46 'tackl':87 'task':35,83 'technic':55 'time':33 'time-consum':32 'unless':36 'vulkan':6,27 'well':53 'wide':22 'window':69 'would':29,74 'x':80 'xwayland':41 'yet':7"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.world/comment/5314364"
    +editedAt: DateTimeImmutable @1700246710 {#4862
      date: 2023-11-17 19:45:10.0 +01:00
    }
    +createdAt: DateTimeImmutable @1699997407 {#4863
      date: 2023-11-14 22:30:07.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4392}
  +body: """
    It looks very interesting.\n
    \n
    I might be wrong, but it seems to me like Vulkan Support in hw is better than opengl:\n
    \n
    - amd since at least Polaris (there is a project to Bring vulkan to really old terrascale graphics, but is jot yet there)\n
    - Intel since idk broadwell Skylake\n
    - Nvidia proprietary for sure don’t know since when and it seems that focus on nvk (new open source driver) is going to be on vulkan\n
    - android since version 7 - Eighty-five percent of active Android devices support Vulkan (this is better than android Version Rollout) [developer.android.com/games/develop/use-vulkan](https://developer.android.com/games/develop/use-vulkan)\n
    - rpi, not sure which versions\n
    \n
    Probably all of them have better Vulkan than opengl drivers (due to drivers being simpler). David Arlie rather quickly implemented first Vulkan driver for AMD once Vulkan was first released. Just in case you need incentive.\n
    \n
    I was thinking of starting something similar as a learning exercise, but I’m really limited in time and not skilled as much in c++, so it would probably lead nowhere. Now I can just build on top - if I get any time for this, will come probably with questions.\n
    \n
    Anyway, this idea was to make something modern. Without the legacy crap. Actual goals were:\n
    \n
    1. Vulkan only (move gfx API Info the future)\n
    2. no x/xwayland (most of the apps in newer toolkits already support Wayland, the others I’d rather avoid)\n
    3. Multithreaded
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 2
  +score: 0
  +lastActive: DateTime @1700001080 {#4975
    date: 2023-11-14 23:31:20.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@ijhoo@lemmy.ml"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4979 …}
  +nested: Doctrine\ORM\PersistentCollection {#4981 …}
  +votes: Doctrine\ORM\PersistentCollection {#4983 …}
  +reports: Doctrine\ORM\PersistentCollection {#4985 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4987 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4989 …}
  -id: 125322
  -bodyTs: "'/games/develop/use-vulkan](https://developer.android.com/games/develop/use-vulkan)':99 '1':206 '2':215 '3':234 '7':79 'activ':85 'actual':203 'alreadi':225 'amd':23,129 'android':76,86,94 'anyway':191 'api':211 'app':221 'arli':121 'avoid':233 'better':20,92,110 'bring':33 'broadwel':48 'build':176 'c':165 'case':137 'come':187 'crap':202 'd':231 'david':120 'developer.android.com':98 'developer.android.com/games/develop/use-vulkan](https://developer.android.com/games/develop/use-vulkan)':97 'devic':87 'driver':69,114,117,127 'due':115 'eighti':81 'eighty-f':80 'exercis':151 'first':125,133 'five':82 'focus':63 'futur':214 'get':181 'gfx':210 'go':71 'goal':204 'graphic':39 'hw':18 'idea':193 'idk':47 'implement':124 'incent':140 'info':212 'intel':45 'interest':4 'jot':42 'know':56 'lead':170 'learn':150 'least':26 'legaci':201 'like':14 'limit':156 'look':2 'm':154 'make':196 'might':6 'modern':198 'move':209 'much':163 'multithread':235 'need':139 'new':66 'newer':223 'nowher':171 'nvidia':50 'nvk':65 'old':37 'open':67 'opengl':22,113 'other':229 'percent':83 'polari':27 'probabl':105,169,188 'project':31 'proprietari':51 'question':190 'quick':123 'rather':122,232 'realli':36,155 'releas':134 'rollout':96 'rpi':100 'seem':11,61 'similar':147 'simpler':119 'sinc':24,46,57,77 'skill':161 'skylak':49 'someth':146,197 'sourc':68 'start':145 'support':16,88,226 'sure':53,102 'terrascal':38 'think':143 'time':158,183 'toolkit':224 'top':178 'version':78,95,104 'vulkan':15,34,75,89,111,126,131,207 'wayland':227 'without':199 'would':168 'wrong':8 'x/xwayland':217 'yet':43"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.ml/comment/5803243"
  +editedAt: DateTimeImmutable @1700281188 {#4976
    date: 2023-11-18 05:19:48.0 +01:00
  }
  +createdAt: DateTimeImmutable @1700001080 {#4977
    date: 2023-11-14 23:31:20.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
83 DENIED edit
App\Entity\EntryComment {#4978
  +user: App\Entity\User {#4405 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4864
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#4392
      +user: App\Entity\User {#4405 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: null
      +root: null
      +body: """
        Do you plan to use vulkan wmi in any way?\n
        \n
        Can xwayland be excluded?
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 2
      +score: 0
      +lastActive: DateTime @1700255001 {#4387
        date: 2023-11-17 22:03:21.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4393 …}
      +nested: Doctrine\ORM\PersistentCollection {#4395 …}
      +votes: Doctrine\ORM\PersistentCollection {#4397 …}
      +reports: Doctrine\ORM\PersistentCollection {#4399 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4401 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4403 …}
      -id: 125040
      -bodyTs: "'exclud':14 'plan':3 'use':5 'vulkan':6 'way':10 'wmi':7 'xwayland':12"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemmy.ml/comment/5801141"
      +editedAt: null
      +createdAt: DateTimeImmutable @1699996291 {#4388
        date: 2023-11-14 22:11:31.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4392}
    +body: """
      Honestly, I haven’t explored Vulkan yet. I initially chose GLES 2.0 as the primary renderer to ensure compatibility with a wide range of hardware. Introducing Vulkan myself would be a time-consuming task unless I receive assistance.\n
      \n
      Regarding XWayland, Louvre doesn’t currently support it, so it’s naturally excluded. Well, it technically can run in rootful mode, but that is somewhat pointless. To enable independent window management, I believe I would need to create a mini X server, a task I haven’t tackled as of now.
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 4
    +score: 0
    +lastActive: DateTime @1699997407 {#4861
      date: 2023-11-14 22:30:07.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@ijhoo@lemmy.ml"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4865 …}
    +nested: Doctrine\ORM\PersistentCollection {#4867 …}
    +votes: Doctrine\ORM\PersistentCollection {#4869 …}
    +reports: Doctrine\ORM\PersistentCollection {#4871 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4873 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4875 …}
    -id: 125092
    -bodyTs: "'2.0':12 'assist':39 'believ':72 'chose':10 'compat':19 'consum':34 'creat':77 'current':45 'doesn':43 'enabl':67 'ensur':18 'exclud':52 'explor':5 'gles':11 'hardwar':25 'haven':3,85 'honest':1 'independ':68 'initi':9 'introduc':26 'louvr':42 'manag':70 'mini':79 'mode':60 'natur':51 'need':75 'pointless':65 'primari':15 'rang':23 'receiv':38 'regard':40 'render':16 'root':59 'run':57 'server':81 'somewhat':64 'support':46 'tackl':87 'task':35,83 'technic':55 'time':33 'time-consum':32 'unless':36 'vulkan':6,27 'well':53 'wide':22 'window':69 'would':29,74 'x':80 'xwayland':41 'yet':7"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.world/comment/5314364"
    +editedAt: DateTimeImmutable @1700246710 {#4862
      date: 2023-11-17 19:45:10.0 +01:00
    }
    +createdAt: DateTimeImmutable @1699997407 {#4863
      date: 2023-11-14 22:30:07.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4392}
  +body: """
    It looks very interesting.\n
    \n
    I might be wrong, but it seems to me like Vulkan Support in hw is better than opengl:\n
    \n
    - amd since at least Polaris (there is a project to Bring vulkan to really old terrascale graphics, but is jot yet there)\n
    - Intel since idk broadwell Skylake\n
    - Nvidia proprietary for sure don’t know since when and it seems that focus on nvk (new open source driver) is going to be on vulkan\n
    - android since version 7 - Eighty-five percent of active Android devices support Vulkan (this is better than android Version Rollout) [developer.android.com/games/develop/use-vulkan](https://developer.android.com/games/develop/use-vulkan)\n
    - rpi, not sure which versions\n
    \n
    Probably all of them have better Vulkan than opengl drivers (due to drivers being simpler). David Arlie rather quickly implemented first Vulkan driver for AMD once Vulkan was first released. Just in case you need incentive.\n
    \n
    I was thinking of starting something similar as a learning exercise, but I’m really limited in time and not skilled as much in c++, so it would probably lead nowhere. Now I can just build on top - if I get any time for this, will come probably with questions.\n
    \n
    Anyway, this idea was to make something modern. Without the legacy crap. Actual goals were:\n
    \n
    1. Vulkan only (move gfx API Info the future)\n
    2. no x/xwayland (most of the apps in newer toolkits already support Wayland, the others I’d rather avoid)\n
    3. Multithreaded
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 2
  +score: 0
  +lastActive: DateTime @1700001080 {#4975
    date: 2023-11-14 23:31:20.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@ijhoo@lemmy.ml"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4979 …}
  +nested: Doctrine\ORM\PersistentCollection {#4981 …}
  +votes: Doctrine\ORM\PersistentCollection {#4983 …}
  +reports: Doctrine\ORM\PersistentCollection {#4985 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4987 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4989 …}
  -id: 125322
  -bodyTs: "'/games/develop/use-vulkan](https://developer.android.com/games/develop/use-vulkan)':99 '1':206 '2':215 '3':234 '7':79 'activ':85 'actual':203 'alreadi':225 'amd':23,129 'android':76,86,94 'anyway':191 'api':211 'app':221 'arli':121 'avoid':233 'better':20,92,110 'bring':33 'broadwel':48 'build':176 'c':165 'case':137 'come':187 'crap':202 'd':231 'david':120 'developer.android.com':98 'developer.android.com/games/develop/use-vulkan](https://developer.android.com/games/develop/use-vulkan)':97 'devic':87 'driver':69,114,117,127 'due':115 'eighti':81 'eighty-f':80 'exercis':151 'first':125,133 'five':82 'focus':63 'futur':214 'get':181 'gfx':210 'go':71 'goal':204 'graphic':39 'hw':18 'idea':193 'idk':47 'implement':124 'incent':140 'info':212 'intel':45 'interest':4 'jot':42 'know':56 'lead':170 'learn':150 'least':26 'legaci':201 'like':14 'limit':156 'look':2 'm':154 'make':196 'might':6 'modern':198 'move':209 'much':163 'multithread':235 'need':139 'new':66 'newer':223 'nowher':171 'nvidia':50 'nvk':65 'old':37 'open':67 'opengl':22,113 'other':229 'percent':83 'polari':27 'probabl':105,169,188 'project':31 'proprietari':51 'question':190 'quick':123 'rather':122,232 'realli':36,155 'releas':134 'rollout':96 'rpi':100 'seem':11,61 'similar':147 'simpler':119 'sinc':24,46,57,77 'skill':161 'skylak':49 'someth':146,197 'sourc':68 'start':145 'support':16,88,226 'sure':53,102 'terrascal':38 'think':143 'time':158,183 'toolkit':224 'top':178 'version':78,95,104 'vulkan':15,34,75,89,111,126,131,207 'wayland':227 'without':199 'would':168 'wrong':8 'x/xwayland':217 'yet':43"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.ml/comment/5803243"
  +editedAt: DateTimeImmutable @1700281188 {#4976
    date: 2023-11-18 05:19:48.0 +01:00
  }
  +createdAt: DateTimeImmutable @1700001080 {#4977
    date: 2023-11-14 23:31:20.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
84 DENIED moderate
App\Entity\EntryComment {#4978
  +user: App\Entity\User {#4405 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4864
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#4392
      +user: App\Entity\User {#4405 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: null
      +root: null
      +body: """
        Do you plan to use vulkan wmi in any way?\n
        \n
        Can xwayland be excluded?
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 2
      +score: 0
      +lastActive: DateTime @1700255001 {#4387
        date: 2023-11-17 22:03:21.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4393 …}
      +nested: Doctrine\ORM\PersistentCollection {#4395 …}
      +votes: Doctrine\ORM\PersistentCollection {#4397 …}
      +reports: Doctrine\ORM\PersistentCollection {#4399 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4401 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4403 …}
      -id: 125040
      -bodyTs: "'exclud':14 'plan':3 'use':5 'vulkan':6 'way':10 'wmi':7 'xwayland':12"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemmy.ml/comment/5801141"
      +editedAt: null
      +createdAt: DateTimeImmutable @1699996291 {#4388
        date: 2023-11-14 22:11:31.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4392}
    +body: """
      Honestly, I haven’t explored Vulkan yet. I initially chose GLES 2.0 as the primary renderer to ensure compatibility with a wide range of hardware. Introducing Vulkan myself would be a time-consuming task unless I receive assistance.\n
      \n
      Regarding XWayland, Louvre doesn’t currently support it, so it’s naturally excluded. Well, it technically can run in rootful mode, but that is somewhat pointless. To enable independent window management, I believe I would need to create a mini X server, a task I haven’t tackled as of now.
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 4
    +score: 0
    +lastActive: DateTime @1699997407 {#4861
      date: 2023-11-14 22:30:07.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@ijhoo@lemmy.ml"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4865 …}
    +nested: Doctrine\ORM\PersistentCollection {#4867 …}
    +votes: Doctrine\ORM\PersistentCollection {#4869 …}
    +reports: Doctrine\ORM\PersistentCollection {#4871 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4873 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4875 …}
    -id: 125092
    -bodyTs: "'2.0':12 'assist':39 'believ':72 'chose':10 'compat':19 'consum':34 'creat':77 'current':45 'doesn':43 'enabl':67 'ensur':18 'exclud':52 'explor':5 'gles':11 'hardwar':25 'haven':3,85 'honest':1 'independ':68 'initi':9 'introduc':26 'louvr':42 'manag':70 'mini':79 'mode':60 'natur':51 'need':75 'pointless':65 'primari':15 'rang':23 'receiv':38 'regard':40 'render':16 'root':59 'run':57 'server':81 'somewhat':64 'support':46 'tackl':87 'task':35,83 'technic':55 'time':33 'time-consum':32 'unless':36 'vulkan':6,27 'well':53 'wide':22 'window':69 'would':29,74 'x':80 'xwayland':41 'yet':7"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.world/comment/5314364"
    +editedAt: DateTimeImmutable @1700246710 {#4862
      date: 2023-11-17 19:45:10.0 +01:00
    }
    +createdAt: DateTimeImmutable @1699997407 {#4863
      date: 2023-11-14 22:30:07.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4392}
  +body: """
    It looks very interesting.\n
    \n
    I might be wrong, but it seems to me like Vulkan Support in hw is better than opengl:\n
    \n
    - amd since at least Polaris (there is a project to Bring vulkan to really old terrascale graphics, but is jot yet there)\n
    - Intel since idk broadwell Skylake\n
    - Nvidia proprietary for sure don’t know since when and it seems that focus on nvk (new open source driver) is going to be on vulkan\n
    - android since version 7 - Eighty-five percent of active Android devices support Vulkan (this is better than android Version Rollout) [developer.android.com/games/develop/use-vulkan](https://developer.android.com/games/develop/use-vulkan)\n
    - rpi, not sure which versions\n
    \n
    Probably all of them have better Vulkan than opengl drivers (due to drivers being simpler). David Arlie rather quickly implemented first Vulkan driver for AMD once Vulkan was first released. Just in case you need incentive.\n
    \n
    I was thinking of starting something similar as a learning exercise, but I’m really limited in time and not skilled as much in c++, so it would probably lead nowhere. Now I can just build on top - if I get any time for this, will come probably with questions.\n
    \n
    Anyway, this idea was to make something modern. Without the legacy crap. Actual goals were:\n
    \n
    1. Vulkan only (move gfx API Info the future)\n
    2. no x/xwayland (most of the apps in newer toolkits already support Wayland, the others I’d rather avoid)\n
    3. Multithreaded
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 2
  +score: 0
  +lastActive: DateTime @1700001080 {#4975
    date: 2023-11-14 23:31:20.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@ijhoo@lemmy.ml"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4979 …}
  +nested: Doctrine\ORM\PersistentCollection {#4981 …}
  +votes: Doctrine\ORM\PersistentCollection {#4983 …}
  +reports: Doctrine\ORM\PersistentCollection {#4985 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4987 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4989 …}
  -id: 125322
  -bodyTs: "'/games/develop/use-vulkan](https://developer.android.com/games/develop/use-vulkan)':99 '1':206 '2':215 '3':234 '7':79 'activ':85 'actual':203 'alreadi':225 'amd':23,129 'android':76,86,94 'anyway':191 'api':211 'app':221 'arli':121 'avoid':233 'better':20,92,110 'bring':33 'broadwel':48 'build':176 'c':165 'case':137 'come':187 'crap':202 'd':231 'david':120 'developer.android.com':98 'developer.android.com/games/develop/use-vulkan](https://developer.android.com/games/develop/use-vulkan)':97 'devic':87 'driver':69,114,117,127 'due':115 'eighti':81 'eighty-f':80 'exercis':151 'first':125,133 'five':82 'focus':63 'futur':214 'get':181 'gfx':210 'go':71 'goal':204 'graphic':39 'hw':18 'idea':193 'idk':47 'implement':124 'incent':140 'info':212 'intel':45 'interest':4 'jot':42 'know':56 'lead':170 'learn':150 'least':26 'legaci':201 'like':14 'limit':156 'look':2 'm':154 'make':196 'might':6 'modern':198 'move':209 'much':163 'multithread':235 'need':139 'new':66 'newer':223 'nowher':171 'nvidia':50 'nvk':65 'old':37 'open':67 'opengl':22,113 'other':229 'percent':83 'polari':27 'probabl':105,169,188 'project':31 'proprietari':51 'question':190 'quick':123 'rather':122,232 'realli':36,155 'releas':134 'rollout':96 'rpi':100 'seem':11,61 'similar':147 'simpler':119 'sinc':24,46,57,77 'skill':161 'skylak':49 'someth':146,197 'sourc':68 'start':145 'support':16,88,226 'sure':53,102 'terrascal':38 'think':143 'time':158,183 'toolkit':224 'top':178 'version':78,95,104 'vulkan':15,34,75,89,111,126,131,207 'wayland':227 'without':199 'would':168 'wrong':8 'x/xwayland':217 'yet':43"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.ml/comment/5803243"
  +editedAt: DateTimeImmutable @1700281188 {#4976
    date: 2023-11-18 05:19:48.0 +01:00
  }
  +createdAt: DateTimeImmutable @1700001080 {#4977
    date: 2023-11-14 23:31:20.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
85 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
86 DENIED moderate
App\Entity\EntryComment {#5080
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4978
    +user: App\Entity\User {#4405 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#4864
      +user: Proxies\__CG__\App\Entity\User {#1970 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: App\Entity\EntryComment {#4392
        +user: App\Entity\User {#4405 …}
        +entry: App\Entity\Entry {#2419}
        +magazine: App\Entity\Magazine {#265}
        +image: null
        +parent: null
        +root: null
        +body: """
          Do you plan to use vulkan wmi in any way?\n
          \n
          Can xwayland be excluded?
          """
        +lang: "en"
        +isAdult: false
        +favouriteCount: 2
        +score: 0
        +lastActive: DateTime @1700255001 {#4387
          date: 2023-11-17 22:03:21.0 +01:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@ehopperdietzel@lemmy.world"
        ]
        +children: Doctrine\ORM\PersistentCollection {#4393 …}
        +nested: Doctrine\ORM\PersistentCollection {#4395 …}
        +votes: Doctrine\ORM\PersistentCollection {#4397 …}
        +reports: Doctrine\ORM\PersistentCollection {#4399 …}
        +favourites: Doctrine\ORM\PersistentCollection {#4401 …}
        +notifications: Doctrine\ORM\PersistentCollection {#4403 …}
        -id: 125040
        -bodyTs: "'exclud':14 'plan':3 'use':5 'vulkan':6 'way':10 'wmi':7 'xwayland':12"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ml/comment/5801141"
        +editedAt: null
        +createdAt: DateTimeImmutable @1699996291 {#4388
          date: 2023-11-14 22:11:31.0 +01:00
        }
      }
      +root: App\Entity\EntryComment {#4392}
      +body: """
        Honestly, I haven’t explored Vulkan yet. I initially chose GLES 2.0 as the primary renderer to ensure compatibility with a wide range of hardware. Introducing Vulkan myself would be a time-consuming task unless I receive assistance.\n
        \n
        Regarding XWayland, Louvre doesn’t currently support it, so it’s naturally excluded. Well, it technically can run in rootful mode, but that is somewhat pointless. To enable independent window management, I believe I would need to create a mini X server, a task I haven’t tackled as of now.
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 4
      +score: 0
      +lastActive: DateTime @1699997407 {#4861
        date: 2023-11-14 22:30:07.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
        "@ijhoo@lemmy.ml"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4865 …}
      +nested: Doctrine\ORM\PersistentCollection {#4867 …}
      +votes: Doctrine\ORM\PersistentCollection {#4869 …}
      +reports: Doctrine\ORM\PersistentCollection {#4871 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4873 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4875 …}
      -id: 125092
      -bodyTs: "'2.0':12 'assist':39 'believ':72 'chose':10 'compat':19 'consum':34 'creat':77 'current':45 'doesn':43 'enabl':67 'ensur':18 'exclud':52 'explor':5 'gles':11 'hardwar':25 'haven':3,85 'honest':1 'independ':68 'initi':9 'introduc':26 'louvr':42 'manag':70 'mini':79 'mode':60 'natur':51 'need':75 'pointless':65 'primari':15 'rang':23 'receiv':38 'regard':40 'render':16 'root':59 'run':57 'server':81 'somewhat':64 'support':46 'tackl':87 'task':35,83 'technic':55 'time':33 'time-consum':32 'unless':36 'vulkan':6,27 'well':53 'wide':22 'window':69 'would':29,74 'x':80 'xwayland':41 'yet':7"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemmy.world/comment/5314364"
      +editedAt: DateTimeImmutable @1700246710 {#4862
        date: 2023-11-17 19:45:10.0 +01:00
      }
      +createdAt: DateTimeImmutable @1699997407 {#4863
        date: 2023-11-14 22:30:07.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4392}
    +body: """
      It looks very interesting.\n
      \n
      I might be wrong, but it seems to me like Vulkan Support in hw is better than opengl:\n
      \n
      - amd since at least Polaris (there is a project to Bring vulkan to really old terrascale graphics, but is jot yet there)\n
      - Intel since idk broadwell Skylake\n
      - Nvidia proprietary for sure don’t know since when and it seems that focus on nvk (new open source driver) is going to be on vulkan\n
      - android since version 7 - Eighty-five percent of active Android devices support Vulkan (this is better than android Version Rollout) [developer.android.com/games/develop/use-vulkan](https://developer.android.com/games/develop/use-vulkan)\n
      - rpi, not sure which versions\n
      \n
      Probably all of them have better Vulkan than opengl drivers (due to drivers being simpler). David Arlie rather quickly implemented first Vulkan driver for AMD once Vulkan was first released. Just in case you need incentive.\n
      \n
      I was thinking of starting something similar as a learning exercise, but I’m really limited in time and not skilled as much in c++, so it would probably lead nowhere. Now I can just build on top - if I get any time for this, will come probably with questions.\n
      \n
      Anyway, this idea was to make something modern. Without the legacy crap. Actual goals were:\n
      \n
      1. Vulkan only (move gfx API Info the future)\n
      2. no x/xwayland (most of the apps in newer toolkits already support Wayland, the others I’d rather avoid)\n
      3. Multithreaded
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 2
    +score: 0
    +lastActive: DateTime @1700001080 {#4975
      date: 2023-11-14 23:31:20.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@ijhoo@lemmy.ml"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4979 …}
    +nested: Doctrine\ORM\PersistentCollection {#4981 …}
    +votes: Doctrine\ORM\PersistentCollection {#4983 …}
    +reports: Doctrine\ORM\PersistentCollection {#4985 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4987 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4989 …}
    -id: 125322
    -bodyTs: "'/games/develop/use-vulkan](https://developer.android.com/games/develop/use-vulkan)':99 '1':206 '2':215 '3':234 '7':79 'activ':85 'actual':203 'alreadi':225 'amd':23,129 'android':76,86,94 'anyway':191 'api':211 'app':221 'arli':121 'avoid':233 'better':20,92,110 'bring':33 'broadwel':48 'build':176 'c':165 'case':137 'come':187 'crap':202 'd':231 'david':120 'developer.android.com':98 'developer.android.com/games/develop/use-vulkan](https://developer.android.com/games/develop/use-vulkan)':97 'devic':87 'driver':69,114,117,127 'due':115 'eighti':81 'eighty-f':80 'exercis':151 'first':125,133 'five':82 'focus':63 'futur':214 'get':181 'gfx':210 'go':71 'goal':204 'graphic':39 'hw':18 'idea':193 'idk':47 'implement':124 'incent':140 'info':212 'intel':45 'interest':4 'jot':42 'know':56 'lead':170 'learn':150 'least':26 'legaci':201 'like':14 'limit':156 'look':2 'm':154 'make':196 'might':6 'modern':198 'move':209 'much':163 'multithread':235 'need':139 'new':66 'newer':223 'nowher':171 'nvidia':50 'nvk':65 'old':37 'open':67 'opengl':22,113 'other':229 'percent':83 'polari':27 'probabl':105,169,188 'project':31 'proprietari':51 'question':190 'quick':123 'rather':122,232 'realli':36,155 'releas':134 'rollout':96 'rpi':100 'seem':11,61 'similar':147 'simpler':119 'sinc':24,46,57,77 'skill':161 'skylak':49 'someth':146,197 'sourc':68 'start':145 'support':16,88,226 'sure':53,102 'terrascal':38 'think':143 'time':158,183 'toolkit':224 'top':178 'version':78,95,104 'vulkan':15,34,75,89,111,126,131,207 'wayland':227 'without':199 'would':168 'wrong':8 'x/xwayland':217 'yet':43"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.ml/comment/5803243"
    +editedAt: DateTimeImmutable @1700281188 {#4976
      date: 2023-11-18 05:19:48.0 +01:00
    }
    +createdAt: DateTimeImmutable @1700001080 {#4977
      date: 2023-11-14 23:31:20.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4392}
  +body: "Interesting, I don’t recall where I read about Vulkan support still being experimental in many Mesa drivers; it might have been an outdated post. I’ll look into it, and perhaps I’ll decide to dive into learning Vulkan. Additionally, there are buffer-sharing mechanisms that already work smoothly with GLES, so I need to explore if the situation is similar for Vulkan. Thanks for your response, and if you have the time and inclination to help include it, feel free to do so! 😄"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 2
  +score: 0
  +lastActive: DateTime @1700003770 {#5081
    date: 2023-11-15 00:16:10.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@ijhoo@lemmy.ml"
  ]
  +children: Doctrine\ORM\PersistentCollection {#5075 …}
  +nested: Doctrine\ORM\PersistentCollection {#5069 …}
  +votes: Doctrine\ORM\PersistentCollection {#5073 …}
  +reports: Doctrine\ORM\PersistentCollection {#5084 …}
  +favourites: Doctrine\ORM\PersistentCollection {#5086 …}
  +notifications: Doctrine\ORM\PersistentCollection {#5088 …}
  -id: 125482
  -bodyTs: "'addit':41 'alreadi':49 'buffer':45 'buffer-shar':44 'decid':35 'dive':37 'driver':18 'experiment':14 'explor':58 'feel':82 'free':83 'gles':53 'help':79 'inclin':77 'includ':80 'interest':1 'learn':39 'll':27,34 'look':28 'mani':16 'mechan':47 'mesa':17 'might':20 'need':56 'outdat':24 'perhap':32 'post':25 'read':8 'recal':5 'respons':69 'share':46 'similar':63 'situat':61 'smooth':51 'still':12 'support':11 'thank':66 'time':75 'vulkan':10,40,65 'work':50"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5316693"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700003770 {#5078
    date: 2023-11-15 00:16:10.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
87 DENIED edit
App\Entity\EntryComment {#5080
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4978
    +user: App\Entity\User {#4405 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#4864
      +user: Proxies\__CG__\App\Entity\User {#1970 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: App\Entity\EntryComment {#4392
        +user: App\Entity\User {#4405 …}
        +entry: App\Entity\Entry {#2419}
        +magazine: App\Entity\Magazine {#265}
        +image: null
        +parent: null
        +root: null
        +body: """
          Do you plan to use vulkan wmi in any way?\n
          \n
          Can xwayland be excluded?
          """
        +lang: "en"
        +isAdult: false
        +favouriteCount: 2
        +score: 0
        +lastActive: DateTime @1700255001 {#4387
          date: 2023-11-17 22:03:21.0 +01:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@ehopperdietzel@lemmy.world"
        ]
        +children: Doctrine\ORM\PersistentCollection {#4393 …}
        +nested: Doctrine\ORM\PersistentCollection {#4395 …}
        +votes: Doctrine\ORM\PersistentCollection {#4397 …}
        +reports: Doctrine\ORM\PersistentCollection {#4399 …}
        +favourites: Doctrine\ORM\PersistentCollection {#4401 …}
        +notifications: Doctrine\ORM\PersistentCollection {#4403 …}
        -id: 125040
        -bodyTs: "'exclud':14 'plan':3 'use':5 'vulkan':6 'way':10 'wmi':7 'xwayland':12"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ml/comment/5801141"
        +editedAt: null
        +createdAt: DateTimeImmutable @1699996291 {#4388
          date: 2023-11-14 22:11:31.0 +01:00
        }
      }
      +root: App\Entity\EntryComment {#4392}
      +body: """
        Honestly, I haven’t explored Vulkan yet. I initially chose GLES 2.0 as the primary renderer to ensure compatibility with a wide range of hardware. Introducing Vulkan myself would be a time-consuming task unless I receive assistance.\n
        \n
        Regarding XWayland, Louvre doesn’t currently support it, so it’s naturally excluded. Well, it technically can run in rootful mode, but that is somewhat pointless. To enable independent window management, I believe I would need to create a mini X server, a task I haven’t tackled as of now.
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 4
      +score: 0
      +lastActive: DateTime @1699997407 {#4861
        date: 2023-11-14 22:30:07.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
        "@ijhoo@lemmy.ml"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4865 …}
      +nested: Doctrine\ORM\PersistentCollection {#4867 …}
      +votes: Doctrine\ORM\PersistentCollection {#4869 …}
      +reports: Doctrine\ORM\PersistentCollection {#4871 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4873 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4875 …}
      -id: 125092
      -bodyTs: "'2.0':12 'assist':39 'believ':72 'chose':10 'compat':19 'consum':34 'creat':77 'current':45 'doesn':43 'enabl':67 'ensur':18 'exclud':52 'explor':5 'gles':11 'hardwar':25 'haven':3,85 'honest':1 'independ':68 'initi':9 'introduc':26 'louvr':42 'manag':70 'mini':79 'mode':60 'natur':51 'need':75 'pointless':65 'primari':15 'rang':23 'receiv':38 'regard':40 'render':16 'root':59 'run':57 'server':81 'somewhat':64 'support':46 'tackl':87 'task':35,83 'technic':55 'time':33 'time-consum':32 'unless':36 'vulkan':6,27 'well':53 'wide':22 'window':69 'would':29,74 'x':80 'xwayland':41 'yet':7"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemmy.world/comment/5314364"
      +editedAt: DateTimeImmutable @1700246710 {#4862
        date: 2023-11-17 19:45:10.0 +01:00
      }
      +createdAt: DateTimeImmutable @1699997407 {#4863
        date: 2023-11-14 22:30:07.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4392}
    +body: """
      It looks very interesting.\n
      \n
      I might be wrong, but it seems to me like Vulkan Support in hw is better than opengl:\n
      \n
      - amd since at least Polaris (there is a project to Bring vulkan to really old terrascale graphics, but is jot yet there)\n
      - Intel since idk broadwell Skylake\n
      - Nvidia proprietary for sure don’t know since when and it seems that focus on nvk (new open source driver) is going to be on vulkan\n
      - android since version 7 - Eighty-five percent of active Android devices support Vulkan (this is better than android Version Rollout) [developer.android.com/games/develop/use-vulkan](https://developer.android.com/games/develop/use-vulkan)\n
      - rpi, not sure which versions\n
      \n
      Probably all of them have better Vulkan than opengl drivers (due to drivers being simpler). David Arlie rather quickly implemented first Vulkan driver for AMD once Vulkan was first released. Just in case you need incentive.\n
      \n
      I was thinking of starting something similar as a learning exercise, but I’m really limited in time and not skilled as much in c++, so it would probably lead nowhere. Now I can just build on top - if I get any time for this, will come probably with questions.\n
      \n
      Anyway, this idea was to make something modern. Without the legacy crap. Actual goals were:\n
      \n
      1. Vulkan only (move gfx API Info the future)\n
      2. no x/xwayland (most of the apps in newer toolkits already support Wayland, the others I’d rather avoid)\n
      3. Multithreaded
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 2
    +score: 0
    +lastActive: DateTime @1700001080 {#4975
      date: 2023-11-14 23:31:20.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@ijhoo@lemmy.ml"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4979 …}
    +nested: Doctrine\ORM\PersistentCollection {#4981 …}
    +votes: Doctrine\ORM\PersistentCollection {#4983 …}
    +reports: Doctrine\ORM\PersistentCollection {#4985 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4987 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4989 …}
    -id: 125322
    -bodyTs: "'/games/develop/use-vulkan](https://developer.android.com/games/develop/use-vulkan)':99 '1':206 '2':215 '3':234 '7':79 'activ':85 'actual':203 'alreadi':225 'amd':23,129 'android':76,86,94 'anyway':191 'api':211 'app':221 'arli':121 'avoid':233 'better':20,92,110 'bring':33 'broadwel':48 'build':176 'c':165 'case':137 'come':187 'crap':202 'd':231 'david':120 'developer.android.com':98 'developer.android.com/games/develop/use-vulkan](https://developer.android.com/games/develop/use-vulkan)':97 'devic':87 'driver':69,114,117,127 'due':115 'eighti':81 'eighty-f':80 'exercis':151 'first':125,133 'five':82 'focus':63 'futur':214 'get':181 'gfx':210 'go':71 'goal':204 'graphic':39 'hw':18 'idea':193 'idk':47 'implement':124 'incent':140 'info':212 'intel':45 'interest':4 'jot':42 'know':56 'lead':170 'learn':150 'least':26 'legaci':201 'like':14 'limit':156 'look':2 'm':154 'make':196 'might':6 'modern':198 'move':209 'much':163 'multithread':235 'need':139 'new':66 'newer':223 'nowher':171 'nvidia':50 'nvk':65 'old':37 'open':67 'opengl':22,113 'other':229 'percent':83 'polari':27 'probabl':105,169,188 'project':31 'proprietari':51 'question':190 'quick':123 'rather':122,232 'realli':36,155 'releas':134 'rollout':96 'rpi':100 'seem':11,61 'similar':147 'simpler':119 'sinc':24,46,57,77 'skill':161 'skylak':49 'someth':146,197 'sourc':68 'start':145 'support':16,88,226 'sure':53,102 'terrascal':38 'think':143 'time':158,183 'toolkit':224 'top':178 'version':78,95,104 'vulkan':15,34,75,89,111,126,131,207 'wayland':227 'without':199 'would':168 'wrong':8 'x/xwayland':217 'yet':43"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.ml/comment/5803243"
    +editedAt: DateTimeImmutable @1700281188 {#4976
      date: 2023-11-18 05:19:48.0 +01:00
    }
    +createdAt: DateTimeImmutable @1700001080 {#4977
      date: 2023-11-14 23:31:20.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4392}
  +body: "Interesting, I don’t recall where I read about Vulkan support still being experimental in many Mesa drivers; it might have been an outdated post. I’ll look into it, and perhaps I’ll decide to dive into learning Vulkan. Additionally, there are buffer-sharing mechanisms that already work smoothly with GLES, so I need to explore if the situation is similar for Vulkan. Thanks for your response, and if you have the time and inclination to help include it, feel free to do so! 😄"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 2
  +score: 0
  +lastActive: DateTime @1700003770 {#5081
    date: 2023-11-15 00:16:10.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@ijhoo@lemmy.ml"
  ]
  +children: Doctrine\ORM\PersistentCollection {#5075 …}
  +nested: Doctrine\ORM\PersistentCollection {#5069 …}
  +votes: Doctrine\ORM\PersistentCollection {#5073 …}
  +reports: Doctrine\ORM\PersistentCollection {#5084 …}
  +favourites: Doctrine\ORM\PersistentCollection {#5086 …}
  +notifications: Doctrine\ORM\PersistentCollection {#5088 …}
  -id: 125482
  -bodyTs: "'addit':41 'alreadi':49 'buffer':45 'buffer-shar':44 'decid':35 'dive':37 'driver':18 'experiment':14 'explor':58 'feel':82 'free':83 'gles':53 'help':79 'inclin':77 'includ':80 'interest':1 'learn':39 'll':27,34 'look':28 'mani':16 'mechan':47 'mesa':17 'might':20 'need':56 'outdat':24 'perhap':32 'post':25 'read':8 'recal':5 'respons':69 'share':46 'similar':63 'situat':61 'smooth':51 'still':12 'support':11 'thank':66 'time':75 'vulkan':10,40,65 'work':50"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5316693"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700003770 {#5078
    date: 2023-11-15 00:16:10.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
88 DENIED moderate
App\Entity\EntryComment {#5080
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4978
    +user: App\Entity\User {#4405 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#4864
      +user: Proxies\__CG__\App\Entity\User {#1970 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: App\Entity\EntryComment {#4392
        +user: App\Entity\User {#4405 …}
        +entry: App\Entity\Entry {#2419}
        +magazine: App\Entity\Magazine {#265}
        +image: null
        +parent: null
        +root: null
        +body: """
          Do you plan to use vulkan wmi in any way?\n
          \n
          Can xwayland be excluded?
          """
        +lang: "en"
        +isAdult: false
        +favouriteCount: 2
        +score: 0
        +lastActive: DateTime @1700255001 {#4387
          date: 2023-11-17 22:03:21.0 +01:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@ehopperdietzel@lemmy.world"
        ]
        +children: Doctrine\ORM\PersistentCollection {#4393 …}
        +nested: Doctrine\ORM\PersistentCollection {#4395 …}
        +votes: Doctrine\ORM\PersistentCollection {#4397 …}
        +reports: Doctrine\ORM\PersistentCollection {#4399 …}
        +favourites: Doctrine\ORM\PersistentCollection {#4401 …}
        +notifications: Doctrine\ORM\PersistentCollection {#4403 …}
        -id: 125040
        -bodyTs: "'exclud':14 'plan':3 'use':5 'vulkan':6 'way':10 'wmi':7 'xwayland':12"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ml/comment/5801141"
        +editedAt: null
        +createdAt: DateTimeImmutable @1699996291 {#4388
          date: 2023-11-14 22:11:31.0 +01:00
        }
      }
      +root: App\Entity\EntryComment {#4392}
      +body: """
        Honestly, I haven’t explored Vulkan yet. I initially chose GLES 2.0 as the primary renderer to ensure compatibility with a wide range of hardware. Introducing Vulkan myself would be a time-consuming task unless I receive assistance.\n
        \n
        Regarding XWayland, Louvre doesn’t currently support it, so it’s naturally excluded. Well, it technically can run in rootful mode, but that is somewhat pointless. To enable independent window management, I believe I would need to create a mini X server, a task I haven’t tackled as of now.
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 4
      +score: 0
      +lastActive: DateTime @1699997407 {#4861
        date: 2023-11-14 22:30:07.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
        "@ijhoo@lemmy.ml"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4865 …}
      +nested: Doctrine\ORM\PersistentCollection {#4867 …}
      +votes: Doctrine\ORM\PersistentCollection {#4869 …}
      +reports: Doctrine\ORM\PersistentCollection {#4871 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4873 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4875 …}
      -id: 125092
      -bodyTs: "'2.0':12 'assist':39 'believ':72 'chose':10 'compat':19 'consum':34 'creat':77 'current':45 'doesn':43 'enabl':67 'ensur':18 'exclud':52 'explor':5 'gles':11 'hardwar':25 'haven':3,85 'honest':1 'independ':68 'initi':9 'introduc':26 'louvr':42 'manag':70 'mini':79 'mode':60 'natur':51 'need':75 'pointless':65 'primari':15 'rang':23 'receiv':38 'regard':40 'render':16 'root':59 'run':57 'server':81 'somewhat':64 'support':46 'tackl':87 'task':35,83 'technic':55 'time':33 'time-consum':32 'unless':36 'vulkan':6,27 'well':53 'wide':22 'window':69 'would':29,74 'x':80 'xwayland':41 'yet':7"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemmy.world/comment/5314364"
      +editedAt: DateTimeImmutable @1700246710 {#4862
        date: 2023-11-17 19:45:10.0 +01:00
      }
      +createdAt: DateTimeImmutable @1699997407 {#4863
        date: 2023-11-14 22:30:07.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4392}
    +body: """
      It looks very interesting.\n
      \n
      I might be wrong, but it seems to me like Vulkan Support in hw is better than opengl:\n
      \n
      - amd since at least Polaris (there is a project to Bring vulkan to really old terrascale graphics, but is jot yet there)\n
      - Intel since idk broadwell Skylake\n
      - Nvidia proprietary for sure don’t know since when and it seems that focus on nvk (new open source driver) is going to be on vulkan\n
      - android since version 7 - Eighty-five percent of active Android devices support Vulkan (this is better than android Version Rollout) [developer.android.com/games/develop/use-vulkan](https://developer.android.com/games/develop/use-vulkan)\n
      - rpi, not sure which versions\n
      \n
      Probably all of them have better Vulkan than opengl drivers (due to drivers being simpler). David Arlie rather quickly implemented first Vulkan driver for AMD once Vulkan was first released. Just in case you need incentive.\n
      \n
      I was thinking of starting something similar as a learning exercise, but I’m really limited in time and not skilled as much in c++, so it would probably lead nowhere. Now I can just build on top - if I get any time for this, will come probably with questions.\n
      \n
      Anyway, this idea was to make something modern. Without the legacy crap. Actual goals were:\n
      \n
      1. Vulkan only (move gfx API Info the future)\n
      2. no x/xwayland (most of the apps in newer toolkits already support Wayland, the others I’d rather avoid)\n
      3. Multithreaded
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 2
    +score: 0
    +lastActive: DateTime @1700001080 {#4975
      date: 2023-11-14 23:31:20.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@ijhoo@lemmy.ml"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4979 …}
    +nested: Doctrine\ORM\PersistentCollection {#4981 …}
    +votes: Doctrine\ORM\PersistentCollection {#4983 …}
    +reports: Doctrine\ORM\PersistentCollection {#4985 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4987 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4989 …}
    -id: 125322
    -bodyTs: "'/games/develop/use-vulkan](https://developer.android.com/games/develop/use-vulkan)':99 '1':206 '2':215 '3':234 '7':79 'activ':85 'actual':203 'alreadi':225 'amd':23,129 'android':76,86,94 'anyway':191 'api':211 'app':221 'arli':121 'avoid':233 'better':20,92,110 'bring':33 'broadwel':48 'build':176 'c':165 'case':137 'come':187 'crap':202 'd':231 'david':120 'developer.android.com':98 'developer.android.com/games/develop/use-vulkan](https://developer.android.com/games/develop/use-vulkan)':97 'devic':87 'driver':69,114,117,127 'due':115 'eighti':81 'eighty-f':80 'exercis':151 'first':125,133 'five':82 'focus':63 'futur':214 'get':181 'gfx':210 'go':71 'goal':204 'graphic':39 'hw':18 'idea':193 'idk':47 'implement':124 'incent':140 'info':212 'intel':45 'interest':4 'jot':42 'know':56 'lead':170 'learn':150 'least':26 'legaci':201 'like':14 'limit':156 'look':2 'm':154 'make':196 'might':6 'modern':198 'move':209 'much':163 'multithread':235 'need':139 'new':66 'newer':223 'nowher':171 'nvidia':50 'nvk':65 'old':37 'open':67 'opengl':22,113 'other':229 'percent':83 'polari':27 'probabl':105,169,188 'project':31 'proprietari':51 'question':190 'quick':123 'rather':122,232 'realli':36,155 'releas':134 'rollout':96 'rpi':100 'seem':11,61 'similar':147 'simpler':119 'sinc':24,46,57,77 'skill':161 'skylak':49 'someth':146,197 'sourc':68 'start':145 'support':16,88,226 'sure':53,102 'terrascal':38 'think':143 'time':158,183 'toolkit':224 'top':178 'version':78,95,104 'vulkan':15,34,75,89,111,126,131,207 'wayland':227 'without':199 'would':168 'wrong':8 'x/xwayland':217 'yet':43"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.ml/comment/5803243"
    +editedAt: DateTimeImmutable @1700281188 {#4976
      date: 2023-11-18 05:19:48.0 +01:00
    }
    +createdAt: DateTimeImmutable @1700001080 {#4977
      date: 2023-11-14 23:31:20.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4392}
  +body: "Interesting, I don’t recall where I read about Vulkan support still being experimental in many Mesa drivers; it might have been an outdated post. I’ll look into it, and perhaps I’ll decide to dive into learning Vulkan. Additionally, there are buffer-sharing mechanisms that already work smoothly with GLES, so I need to explore if the situation is similar for Vulkan. Thanks for your response, and if you have the time and inclination to help include it, feel free to do so! 😄"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 2
  +score: 0
  +lastActive: DateTime @1700003770 {#5081
    date: 2023-11-15 00:16:10.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@ijhoo@lemmy.ml"
  ]
  +children: Doctrine\ORM\PersistentCollection {#5075 …}
  +nested: Doctrine\ORM\PersistentCollection {#5069 …}
  +votes: Doctrine\ORM\PersistentCollection {#5073 …}
  +reports: Doctrine\ORM\PersistentCollection {#5084 …}
  +favourites: Doctrine\ORM\PersistentCollection {#5086 …}
  +notifications: Doctrine\ORM\PersistentCollection {#5088 …}
  -id: 125482
  -bodyTs: "'addit':41 'alreadi':49 'buffer':45 'buffer-shar':44 'decid':35 'dive':37 'driver':18 'experiment':14 'explor':58 'feel':82 'free':83 'gles':53 'help':79 'inclin':77 'includ':80 'interest':1 'learn':39 'll':27,34 'look':28 'mani':16 'mechan':47 'mesa':17 'might':20 'need':56 'outdat':24 'perhap':32 'post':25 'read':8 'recal':5 'respons':69 'share':46 'similar':63 'situat':61 'smooth':51 'still':12 'support':11 'thank':66 'time':75 'vulkan':10,40,65 'work':50"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5316693"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700003770 {#5078
    date: 2023-11-15 00:16:10.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
89 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
90 DENIED moderate
App\Entity\EntryComment {#4465
  +user: App\Entity\User {#4478 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: null
  +root: null
  +body: "There’s desperate need to a library that’s simpler to use than wlroots or smithay - but unless it supports more protocols (later shell, gamma control, session lock), I don’t think this is a real a alternative yet."
  +lang: "en"
  +isAdult: false
  +favouriteCount: 10
  +score: 0
  +lastActive: DateTime @1700280470 {#4460
    date: 2023-11-18 05:07:50.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4466 …}
  +nested: Doctrine\ORM\PersistentCollection {#4468 …}
  +votes: Doctrine\ORM\PersistentCollection {#4470 …}
  +reports: Doctrine\ORM\PersistentCollection {#4472 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4474 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4476 …}
  -id: 124949
  -bodyTs: "'altern':38 'control':26 'desper':3 'gamma':25 'later':23 'librari':7 'lock':28 'need':4 'protocol':22 'real':36 'session':27 'shell':24 'simpler':10 'smithay':16 'support':20 'think':32 'unless':18 'use':12 'wlroot':14 'yet':39"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemm.ee/comment/6130695"
  +editedAt: null
  +createdAt: DateTimeImmutable @1699994997 {#4461
    date: 2023-11-14 21:49:57.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
91 DENIED edit
App\Entity\EntryComment {#4465
  +user: App\Entity\User {#4478 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: null
  +root: null
  +body: "There’s desperate need to a library that’s simpler to use than wlroots or smithay - but unless it supports more protocols (later shell, gamma control, session lock), I don’t think this is a real a alternative yet."
  +lang: "en"
  +isAdult: false
  +favouriteCount: 10
  +score: 0
  +lastActive: DateTime @1700280470 {#4460
    date: 2023-11-18 05:07:50.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4466 …}
  +nested: Doctrine\ORM\PersistentCollection {#4468 …}
  +votes: Doctrine\ORM\PersistentCollection {#4470 …}
  +reports: Doctrine\ORM\PersistentCollection {#4472 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4474 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4476 …}
  -id: 124949
  -bodyTs: "'altern':38 'control':26 'desper':3 'gamma':25 'later':23 'librari':7 'lock':28 'need':4 'protocol':22 'real':36 'session':27 'shell':24 'simpler':10 'smithay':16 'support':20 'think':32 'unless':18 'use':12 'wlroot':14 'yet':39"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemm.ee/comment/6130695"
  +editedAt: null
  +createdAt: DateTimeImmutable @1699994997 {#4461
    date: 2023-11-14 21:49:57.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
92 DENIED moderate
App\Entity\EntryComment {#4465
  +user: App\Entity\User {#4478 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: null
  +root: null
  +body: "There’s desperate need to a library that’s simpler to use than wlroots or smithay - but unless it supports more protocols (later shell, gamma control, session lock), I don’t think this is a real a alternative yet."
  +lang: "en"
  +isAdult: false
  +favouriteCount: 10
  +score: 0
  +lastActive: DateTime @1700280470 {#4460
    date: 2023-11-18 05:07:50.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4466 …}
  +nested: Doctrine\ORM\PersistentCollection {#4468 …}
  +votes: Doctrine\ORM\PersistentCollection {#4470 …}
  +reports: Doctrine\ORM\PersistentCollection {#4472 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4474 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4476 …}
  -id: 124949
  -bodyTs: "'altern':38 'control':26 'desper':3 'gamma':25 'later':23 'librari':7 'lock':28 'need':4 'protocol':22 'real':36 'session':27 'shell':24 'simpler':10 'smithay':16 'support':20 'think':32 'unless':18 'use':12 'wlroot':14 'yet':39"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemm.ee/comment/6130695"
  +editedAt: null
  +createdAt: DateTimeImmutable @1699994997 {#4461
    date: 2023-11-14 21:49:57.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
93 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
94 DENIED moderate
App\Entity\EntryComment {#4817
  +user: Proxies\__CG__\App\Entity\User {#4818 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4465
    +user: App\Entity\User {#4478 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: "There’s desperate need to a library that’s simpler to use than wlroots or smithay - but unless it supports more protocols (later shell, gamma control, session lock), I don’t think this is a real a alternative yet."
    +lang: "en"
    +isAdult: false
    +favouriteCount: 10
    +score: 0
    +lastActive: DateTime @1700280470 {#4460
      date: 2023-11-18 05:07:50.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4466 …}
    +nested: Doctrine\ORM\PersistentCollection {#4468 …}
    +votes: Doctrine\ORM\PersistentCollection {#4470 …}
    +reports: Doctrine\ORM\PersistentCollection {#4472 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4474 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4476 …}
    -id: 124949
    -bodyTs: "'altern':38 'control':26 'desper':3 'gamma':25 'later':23 'librari':7 'lock':28 'need':4 'protocol':22 'real':36 'session':27 'shell':24 'simpler':10 'smithay':16 'support':20 'think':32 'unless':18 'use':12 'wlroot':14 'yet':39"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemm.ee/comment/6130695"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699994997 {#4461
      date: 2023-11-14 21:49:57.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4465}
  +body: """
    I was thinking similar, though I'm also still on X with nVidia and XFCE and am in a weird way* with programming.\n
    \n
    I have my own custom XFWM theme that is really minimal (12px title with 8px tall buttons with some being wider to compensate, [somewhat outdated example](https://i.imgur.com/uUrP7Fw.png)) and I'd like to expand upon it (floating titles, inset window buttons, dynamic button width, media integration) but I've looked at examples and don't understand enough to even get just a rectangle for a titlebar (though X I assume for something basic, X would probably still be the easiest).\n
    \n
    *= the only language that I'm interested in (due to it being easy in a style I like while still having performance/capability/flexibility etc) is not popular, and worse is I have lost a bit of hope/confidence in its future (as well as its bus factor reducing further because the person who made the package manager+installer and a book walked away) so I still haven't really done much with it.
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 0
  +score: 0
  +lastActive: DateTime @1700000284 {#4814
    date: 2023-11-14 23:18:04.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@lily33@lemm.ee"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4819 …}
  +nested: Doctrine\ORM\PersistentCollection {#4821 …}
  +votes: Doctrine\ORM\PersistentCollection {#4823 …}
  +reports: Doctrine\ORM\PersistentCollection {#4825 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4827 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4829 …}
  -id: 125255
  -bodyTs: "'/uurp7fw.png))':52 '12px':35 '8px':38 'also':8 'assum':94 'away':165 'basic':97 'bit':138 'book':163 'bus':148 'button':40,65,67 'compens':46 'custom':28 'd':55 'done':172 'due':113 'dynam':66 'easi':117 'easiest':104 'enough':81 'etc':127 'even':83 'exampl':49,76 'expand':58 'factor':149 'float':61 'futur':143 'get':84 'haven':169 'hope/confidence':140 'i.imgur.com':51 'i.imgur.com/uurp7fw.png))':50 'inset':63 'instal':160 'integr':70 'interest':111 'languag':107 'like':56,122 'look':74 'lost':136 'm':7,110 'made':156 'manag':159 'media':69 'minim':34 'much':173 'nvidia':13 'outdat':48 'packag':158 'performance/capability/flexibility':126 'person':154 'popular':130 'probabl':100 'program':23 'realli':33,171 'rectangl':87 'reduc':150 'similar':4 'someth':96 'somewhat':47 'still':9,101,124,168 'style':120 'tall':39 'theme':30 'think':3 'though':5,91 'titl':36,62 'titlebar':90 'understand':80 'upon':59 've':73 'walk':164 'way':21 'weird':20 'well':145 'wider':44 'width':68 'window':64 'wors':132 'would':99 'x':11,92,98 'xfce':15 'xfwm':29"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://kbin.social/m/linux@lemmy.ml/t/626632/-/comment/3565461"
  +editedAt: DateTimeImmutable @1700250978 {#4815
    date: 2023-11-17 20:56:18.0 +01:00
  }
  +createdAt: DateTimeImmutable @1700000284 {#4816
    date: 2023-11-14 23:18:04.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
95 DENIED edit
App\Entity\EntryComment {#4817
  +user: Proxies\__CG__\App\Entity\User {#4818 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4465
    +user: App\Entity\User {#4478 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: "There’s desperate need to a library that’s simpler to use than wlroots or smithay - but unless it supports more protocols (later shell, gamma control, session lock), I don’t think this is a real a alternative yet."
    +lang: "en"
    +isAdult: false
    +favouriteCount: 10
    +score: 0
    +lastActive: DateTime @1700280470 {#4460
      date: 2023-11-18 05:07:50.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4466 …}
    +nested: Doctrine\ORM\PersistentCollection {#4468 …}
    +votes: Doctrine\ORM\PersistentCollection {#4470 …}
    +reports: Doctrine\ORM\PersistentCollection {#4472 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4474 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4476 …}
    -id: 124949
    -bodyTs: "'altern':38 'control':26 'desper':3 'gamma':25 'later':23 'librari':7 'lock':28 'need':4 'protocol':22 'real':36 'session':27 'shell':24 'simpler':10 'smithay':16 'support':20 'think':32 'unless':18 'use':12 'wlroot':14 'yet':39"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemm.ee/comment/6130695"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699994997 {#4461
      date: 2023-11-14 21:49:57.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4465}
  +body: """
    I was thinking similar, though I'm also still on X with nVidia and XFCE and am in a weird way* with programming.\n
    \n
    I have my own custom XFWM theme that is really minimal (12px title with 8px tall buttons with some being wider to compensate, [somewhat outdated example](https://i.imgur.com/uUrP7Fw.png)) and I'd like to expand upon it (floating titles, inset window buttons, dynamic button width, media integration) but I've looked at examples and don't understand enough to even get just a rectangle for a titlebar (though X I assume for something basic, X would probably still be the easiest).\n
    \n
    *= the only language that I'm interested in (due to it being easy in a style I like while still having performance/capability/flexibility etc) is not popular, and worse is I have lost a bit of hope/confidence in its future (as well as its bus factor reducing further because the person who made the package manager+installer and a book walked away) so I still haven't really done much with it.
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 0
  +score: 0
  +lastActive: DateTime @1700000284 {#4814
    date: 2023-11-14 23:18:04.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@lily33@lemm.ee"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4819 …}
  +nested: Doctrine\ORM\PersistentCollection {#4821 …}
  +votes: Doctrine\ORM\PersistentCollection {#4823 …}
  +reports: Doctrine\ORM\PersistentCollection {#4825 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4827 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4829 …}
  -id: 125255
  -bodyTs: "'/uurp7fw.png))':52 '12px':35 '8px':38 'also':8 'assum':94 'away':165 'basic':97 'bit':138 'book':163 'bus':148 'button':40,65,67 'compens':46 'custom':28 'd':55 'done':172 'due':113 'dynam':66 'easi':117 'easiest':104 'enough':81 'etc':127 'even':83 'exampl':49,76 'expand':58 'factor':149 'float':61 'futur':143 'get':84 'haven':169 'hope/confidence':140 'i.imgur.com':51 'i.imgur.com/uurp7fw.png))':50 'inset':63 'instal':160 'integr':70 'interest':111 'languag':107 'like':56,122 'look':74 'lost':136 'm':7,110 'made':156 'manag':159 'media':69 'minim':34 'much':173 'nvidia':13 'outdat':48 'packag':158 'performance/capability/flexibility':126 'person':154 'popular':130 'probabl':100 'program':23 'realli':33,171 'rectangl':87 'reduc':150 'similar':4 'someth':96 'somewhat':47 'still':9,101,124,168 'style':120 'tall':39 'theme':30 'think':3 'though':5,91 'titl':36,62 'titlebar':90 'understand':80 'upon':59 've':73 'walk':164 'way':21 'weird':20 'well':145 'wider':44 'width':68 'window':64 'wors':132 'would':99 'x':11,92,98 'xfce':15 'xfwm':29"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://kbin.social/m/linux@lemmy.ml/t/626632/-/comment/3565461"
  +editedAt: DateTimeImmutable @1700250978 {#4815
    date: 2023-11-17 20:56:18.0 +01:00
  }
  +createdAt: DateTimeImmutable @1700000284 {#4816
    date: 2023-11-14 23:18:04.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
96 DENIED moderate
App\Entity\EntryComment {#4817
  +user: Proxies\__CG__\App\Entity\User {#4818 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4465
    +user: App\Entity\User {#4478 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: "There’s desperate need to a library that’s simpler to use than wlroots or smithay - but unless it supports more protocols (later shell, gamma control, session lock), I don’t think this is a real a alternative yet."
    +lang: "en"
    +isAdult: false
    +favouriteCount: 10
    +score: 0
    +lastActive: DateTime @1700280470 {#4460
      date: 2023-11-18 05:07:50.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4466 …}
    +nested: Doctrine\ORM\PersistentCollection {#4468 …}
    +votes: Doctrine\ORM\PersistentCollection {#4470 …}
    +reports: Doctrine\ORM\PersistentCollection {#4472 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4474 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4476 …}
    -id: 124949
    -bodyTs: "'altern':38 'control':26 'desper':3 'gamma':25 'later':23 'librari':7 'lock':28 'need':4 'protocol':22 'real':36 'session':27 'shell':24 'simpler':10 'smithay':16 'support':20 'think':32 'unless':18 'use':12 'wlroot':14 'yet':39"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemm.ee/comment/6130695"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699994997 {#4461
      date: 2023-11-14 21:49:57.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4465}
  +body: """
    I was thinking similar, though I'm also still on X with nVidia and XFCE and am in a weird way* with programming.\n
    \n
    I have my own custom XFWM theme that is really minimal (12px title with 8px tall buttons with some being wider to compensate, [somewhat outdated example](https://i.imgur.com/uUrP7Fw.png)) and I'd like to expand upon it (floating titles, inset window buttons, dynamic button width, media integration) but I've looked at examples and don't understand enough to even get just a rectangle for a titlebar (though X I assume for something basic, X would probably still be the easiest).\n
    \n
    *= the only language that I'm interested in (due to it being easy in a style I like while still having performance/capability/flexibility etc) is not popular, and worse is I have lost a bit of hope/confidence in its future (as well as its bus factor reducing further because the person who made the package manager+installer and a book walked away) so I still haven't really done much with it.
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 0
  +score: 0
  +lastActive: DateTime @1700000284 {#4814
    date: 2023-11-14 23:18:04.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@lily33@lemm.ee"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4819 …}
  +nested: Doctrine\ORM\PersistentCollection {#4821 …}
  +votes: Doctrine\ORM\PersistentCollection {#4823 …}
  +reports: Doctrine\ORM\PersistentCollection {#4825 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4827 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4829 …}
  -id: 125255
  -bodyTs: "'/uurp7fw.png))':52 '12px':35 '8px':38 'also':8 'assum':94 'away':165 'basic':97 'bit':138 'book':163 'bus':148 'button':40,65,67 'compens':46 'custom':28 'd':55 'done':172 'due':113 'dynam':66 'easi':117 'easiest':104 'enough':81 'etc':127 'even':83 'exampl':49,76 'expand':58 'factor':149 'float':61 'futur':143 'get':84 'haven':169 'hope/confidence':140 'i.imgur.com':51 'i.imgur.com/uurp7fw.png))':50 'inset':63 'instal':160 'integr':70 'interest':111 'languag':107 'like':56,122 'look':74 'lost':136 'm':7,110 'made':156 'manag':159 'media':69 'minim':34 'much':173 'nvidia':13 'outdat':48 'packag':158 'performance/capability/flexibility':126 'person':154 'popular':130 'probabl':100 'program':23 'realli':33,171 'rectangl':87 'reduc':150 'similar':4 'someth':96 'somewhat':47 'still':9,101,124,168 'style':120 'tall':39 'theme':30 'think':3 'though':5,91 'titl':36,62 'titlebar':90 'understand':80 'upon':59 've':73 'walk':164 'way':21 'weird':20 'well':145 'wider':44 'width':68 'window':64 'wors':132 'would':99 'x':11,92,98 'xfce':15 'xfwm':29"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://kbin.social/m/linux@lemmy.ml/t/626632/-/comment/3565461"
  +editedAt: DateTimeImmutable @1700250978 {#4815
    date: 2023-11-17 20:56:18.0 +01:00
  }
  +createdAt: DateTimeImmutable @1700000284 {#4816
    date: 2023-11-14 23:18:04.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
97 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
98 DENIED moderate
App\Entity\EntryComment {#4993
  +user: App\Entity\User {#4072 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4817
    +user: Proxies\__CG__\App\Entity\User {#4818 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#4465
      +user: App\Entity\User {#4478 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: null
      +root: null
      +body: "There’s desperate need to a library that’s simpler to use than wlroots or smithay - but unless it supports more protocols (later shell, gamma control, session lock), I don’t think this is a real a alternative yet."
      +lang: "en"
      +isAdult: false
      +favouriteCount: 10
      +score: 0
      +lastActive: DateTime @1700280470 {#4460
        date: 2023-11-18 05:07:50.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4466 …}
      +nested: Doctrine\ORM\PersistentCollection {#4468 …}
      +votes: Doctrine\ORM\PersistentCollection {#4470 …}
      +reports: Doctrine\ORM\PersistentCollection {#4472 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4474 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4476 …}
      -id: 124949
      -bodyTs: "'altern':38 'control':26 'desper':3 'gamma':25 'later':23 'librari':7 'lock':28 'need':4 'protocol':22 'real':36 'session':27 'shell':24 'simpler':10 'smithay':16 'support':20 'think':32 'unless':18 'use':12 'wlroot':14 'yet':39"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemm.ee/comment/6130695"
      +editedAt: null
      +createdAt: DateTimeImmutable @1699994997 {#4461
        date: 2023-11-14 21:49:57.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4465}
    +body: """
      I was thinking similar, though I'm also still on X with nVidia and XFCE and am in a weird way* with programming.\n
      \n
      I have my own custom XFWM theme that is really minimal (12px title with 8px tall buttons with some being wider to compensate, [somewhat outdated example](https://i.imgur.com/uUrP7Fw.png)) and I'd like to expand upon it (floating titles, inset window buttons, dynamic button width, media integration) but I've looked at examples and don't understand enough to even get just a rectangle for a titlebar (though X I assume for something basic, X would probably still be the easiest).\n
      \n
      *= the only language that I'm interested in (due to it being easy in a style I like while still having performance/capability/flexibility etc) is not popular, and worse is I have lost a bit of hope/confidence in its future (as well as its bus factor reducing further because the person who made the package manager+installer and a book walked away) so I still haven't really done much with it.
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 0
    +score: 0
    +lastActive: DateTime @1700000284 {#4814
      date: 2023-11-14 23:18:04.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@lily33@lemm.ee"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4819 …}
    +nested: Doctrine\ORM\PersistentCollection {#4821 …}
    +votes: Doctrine\ORM\PersistentCollection {#4823 …}
    +reports: Doctrine\ORM\PersistentCollection {#4825 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4827 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4829 …}
    -id: 125255
    -bodyTs: "'/uurp7fw.png))':52 '12px':35 '8px':38 'also':8 'assum':94 'away':165 'basic':97 'bit':138 'book':163 'bus':148 'button':40,65,67 'compens':46 'custom':28 'd':55 'done':172 'due':113 'dynam':66 'easi':117 'easiest':104 'enough':81 'etc':127 'even':83 'exampl':49,76 'expand':58 'factor':149 'float':61 'futur':143 'get':84 'haven':169 'hope/confidence':140 'i.imgur.com':51 'i.imgur.com/uurp7fw.png))':50 'inset':63 'instal':160 'integr':70 'interest':111 'languag':107 'like':56,122 'look':74 'lost':136 'm':7,110 'made':156 'manag':159 'media':69 'minim':34 'much':173 'nvidia':13 'outdat':48 'packag':158 'performance/capability/flexibility':126 'person':154 'popular':130 'probabl':100 'program':23 'realli':33,171 'rectangl':87 'reduc':150 'similar':4 'someth':96 'somewhat':47 'still':9,101,124,168 'style':120 'tall':39 'theme':30 'think':3 'though':5,91 'titl':36,62 'titlebar':90 'understand':80 'upon':59 've':73 'walk':164 'way':21 'weird':20 'well':145 'wider':44 'width':68 'window':64 'wors':132 'would':99 'x':11,92,98 'xfce':15 'xfwm':29"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://kbin.social/m/linux@lemmy.ml/t/626632/-/comment/3565461"
    +editedAt: DateTimeImmutable @1700250978 {#4815
      date: 2023-11-17 20:56:18.0 +01:00
    }
    +createdAt: DateTimeImmutable @1700000284 {#4816
      date: 2023-11-14 23:18:04.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4465}
  +body: "What programming language?"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 0
  +score: 0
  +lastActive: DateTime @1700027968 {#4991
    date: 2023-11-15 06:59:28.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@lily33@lemm.ee"
    "@insomniac_lemon@kbin.social"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4994 …}
  +nested: Doctrine\ORM\PersistentCollection {#4996 …}
  +votes: Doctrine\ORM\PersistentCollection {#4998 …}
  +reports: Doctrine\ORM\PersistentCollection {#5000 …}
  +favourites: Doctrine\ORM\PersistentCollection {#5002 …}
  +notifications: Doctrine\ORM\PersistentCollection {#5004 …}
  -id: 126237
  -bodyTs: "'languag':3 'program':2"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://programming.dev/comment/4837618"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700027968 {#4992
    date: 2023-11-15 06:59:28.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
99 DENIED edit
App\Entity\EntryComment {#4993
  +user: App\Entity\User {#4072 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4817
    +user: Proxies\__CG__\App\Entity\User {#4818 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#4465
      +user: App\Entity\User {#4478 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: null
      +root: null
      +body: "There’s desperate need to a library that’s simpler to use than wlroots or smithay - but unless it supports more protocols (later shell, gamma control, session lock), I don’t think this is a real a alternative yet."
      +lang: "en"
      +isAdult: false
      +favouriteCount: 10
      +score: 0
      +lastActive: DateTime @1700280470 {#4460
        date: 2023-11-18 05:07:50.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4466 …}
      +nested: Doctrine\ORM\PersistentCollection {#4468 …}
      +votes: Doctrine\ORM\PersistentCollection {#4470 …}
      +reports: Doctrine\ORM\PersistentCollection {#4472 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4474 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4476 …}
      -id: 124949
      -bodyTs: "'altern':38 'control':26 'desper':3 'gamma':25 'later':23 'librari':7 'lock':28 'need':4 'protocol':22 'real':36 'session':27 'shell':24 'simpler':10 'smithay':16 'support':20 'think':32 'unless':18 'use':12 'wlroot':14 'yet':39"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemm.ee/comment/6130695"
      +editedAt: null
      +createdAt: DateTimeImmutable @1699994997 {#4461
        date: 2023-11-14 21:49:57.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4465}
    +body: """
      I was thinking similar, though I'm also still on X with nVidia and XFCE and am in a weird way* with programming.\n
      \n
      I have my own custom XFWM theme that is really minimal (12px title with 8px tall buttons with some being wider to compensate, [somewhat outdated example](https://i.imgur.com/uUrP7Fw.png)) and I'd like to expand upon it (floating titles, inset window buttons, dynamic button width, media integration) but I've looked at examples and don't understand enough to even get just a rectangle for a titlebar (though X I assume for something basic, X would probably still be the easiest).\n
      \n
      *= the only language that I'm interested in (due to it being easy in a style I like while still having performance/capability/flexibility etc) is not popular, and worse is I have lost a bit of hope/confidence in its future (as well as its bus factor reducing further because the person who made the package manager+installer and a book walked away) so I still haven't really done much with it.
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 0
    +score: 0
    +lastActive: DateTime @1700000284 {#4814
      date: 2023-11-14 23:18:04.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@lily33@lemm.ee"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4819 …}
    +nested: Doctrine\ORM\PersistentCollection {#4821 …}
    +votes: Doctrine\ORM\PersistentCollection {#4823 …}
    +reports: Doctrine\ORM\PersistentCollection {#4825 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4827 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4829 …}
    -id: 125255
    -bodyTs: "'/uurp7fw.png))':52 '12px':35 '8px':38 'also':8 'assum':94 'away':165 'basic':97 'bit':138 'book':163 'bus':148 'button':40,65,67 'compens':46 'custom':28 'd':55 'done':172 'due':113 'dynam':66 'easi':117 'easiest':104 'enough':81 'etc':127 'even':83 'exampl':49,76 'expand':58 'factor':149 'float':61 'futur':143 'get':84 'haven':169 'hope/confidence':140 'i.imgur.com':51 'i.imgur.com/uurp7fw.png))':50 'inset':63 'instal':160 'integr':70 'interest':111 'languag':107 'like':56,122 'look':74 'lost':136 'm':7,110 'made':156 'manag':159 'media':69 'minim':34 'much':173 'nvidia':13 'outdat':48 'packag':158 'performance/capability/flexibility':126 'person':154 'popular':130 'probabl':100 'program':23 'realli':33,171 'rectangl':87 'reduc':150 'similar':4 'someth':96 'somewhat':47 'still':9,101,124,168 'style':120 'tall':39 'theme':30 'think':3 'though':5,91 'titl':36,62 'titlebar':90 'understand':80 'upon':59 've':73 'walk':164 'way':21 'weird':20 'well':145 'wider':44 'width':68 'window':64 'wors':132 'would':99 'x':11,92,98 'xfce':15 'xfwm':29"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://kbin.social/m/linux@lemmy.ml/t/626632/-/comment/3565461"
    +editedAt: DateTimeImmutable @1700250978 {#4815
      date: 2023-11-17 20:56:18.0 +01:00
    }
    +createdAt: DateTimeImmutable @1700000284 {#4816
      date: 2023-11-14 23:18:04.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4465}
  +body: "What programming language?"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 0
  +score: 0
  +lastActive: DateTime @1700027968 {#4991
    date: 2023-11-15 06:59:28.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@lily33@lemm.ee"
    "@insomniac_lemon@kbin.social"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4994 …}
  +nested: Doctrine\ORM\PersistentCollection {#4996 …}
  +votes: Doctrine\ORM\PersistentCollection {#4998 …}
  +reports: Doctrine\ORM\PersistentCollection {#5000 …}
  +favourites: Doctrine\ORM\PersistentCollection {#5002 …}
  +notifications: Doctrine\ORM\PersistentCollection {#5004 …}
  -id: 126237
  -bodyTs: "'languag':3 'program':2"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://programming.dev/comment/4837618"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700027968 {#4992
    date: 2023-11-15 06:59:28.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
100 DENIED moderate
App\Entity\EntryComment {#4993
  +user: App\Entity\User {#4072 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4817
    +user: Proxies\__CG__\App\Entity\User {#4818 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#4465
      +user: App\Entity\User {#4478 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: null
      +root: null
      +body: "There’s desperate need to a library that’s simpler to use than wlroots or smithay - but unless it supports more protocols (later shell, gamma control, session lock), I don’t think this is a real a alternative yet."
      +lang: "en"
      +isAdult: false
      +favouriteCount: 10
      +score: 0
      +lastActive: DateTime @1700280470 {#4460
        date: 2023-11-18 05:07:50.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4466 …}
      +nested: Doctrine\ORM\PersistentCollection {#4468 …}
      +votes: Doctrine\ORM\PersistentCollection {#4470 …}
      +reports: Doctrine\ORM\PersistentCollection {#4472 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4474 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4476 …}
      -id: 124949
      -bodyTs: "'altern':38 'control':26 'desper':3 'gamma':25 'later':23 'librari':7 'lock':28 'need':4 'protocol':22 'real':36 'session':27 'shell':24 'simpler':10 'smithay':16 'support':20 'think':32 'unless':18 'use':12 'wlroot':14 'yet':39"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemm.ee/comment/6130695"
      +editedAt: null
      +createdAt: DateTimeImmutable @1699994997 {#4461
        date: 2023-11-14 21:49:57.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4465}
    +body: """
      I was thinking similar, though I'm also still on X with nVidia and XFCE and am in a weird way* with programming.\n
      \n
      I have my own custom XFWM theme that is really minimal (12px title with 8px tall buttons with some being wider to compensate, [somewhat outdated example](https://i.imgur.com/uUrP7Fw.png)) and I'd like to expand upon it (floating titles, inset window buttons, dynamic button width, media integration) but I've looked at examples and don't understand enough to even get just a rectangle for a titlebar (though X I assume for something basic, X would probably still be the easiest).\n
      \n
      *= the only language that I'm interested in (due to it being easy in a style I like while still having performance/capability/flexibility etc) is not popular, and worse is I have lost a bit of hope/confidence in its future (as well as its bus factor reducing further because the person who made the package manager+installer and a book walked away) so I still haven't really done much with it.
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 0
    +score: 0
    +lastActive: DateTime @1700000284 {#4814
      date: 2023-11-14 23:18:04.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@lily33@lemm.ee"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4819 …}
    +nested: Doctrine\ORM\PersistentCollection {#4821 …}
    +votes: Doctrine\ORM\PersistentCollection {#4823 …}
    +reports: Doctrine\ORM\PersistentCollection {#4825 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4827 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4829 …}
    -id: 125255
    -bodyTs: "'/uurp7fw.png))':52 '12px':35 '8px':38 'also':8 'assum':94 'away':165 'basic':97 'bit':138 'book':163 'bus':148 'button':40,65,67 'compens':46 'custom':28 'd':55 'done':172 'due':113 'dynam':66 'easi':117 'easiest':104 'enough':81 'etc':127 'even':83 'exampl':49,76 'expand':58 'factor':149 'float':61 'futur':143 'get':84 'haven':169 'hope/confidence':140 'i.imgur.com':51 'i.imgur.com/uurp7fw.png))':50 'inset':63 'instal':160 'integr':70 'interest':111 'languag':107 'like':56,122 'look':74 'lost':136 'm':7,110 'made':156 'manag':159 'media':69 'minim':34 'much':173 'nvidia':13 'outdat':48 'packag':158 'performance/capability/flexibility':126 'person':154 'popular':130 'probabl':100 'program':23 'realli':33,171 'rectangl':87 'reduc':150 'similar':4 'someth':96 'somewhat':47 'still':9,101,124,168 'style':120 'tall':39 'theme':30 'think':3 'though':5,91 'titl':36,62 'titlebar':90 'understand':80 'upon':59 've':73 'walk':164 'way':21 'weird':20 'well':145 'wider':44 'width':68 'window':64 'wors':132 'would':99 'x':11,92,98 'xfce':15 'xfwm':29"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://kbin.social/m/linux@lemmy.ml/t/626632/-/comment/3565461"
    +editedAt: DateTimeImmutable @1700250978 {#4815
      date: 2023-11-17 20:56:18.0 +01:00
    }
    +createdAt: DateTimeImmutable @1700000284 {#4816
      date: 2023-11-14 23:18:04.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4465}
  +body: "What programming language?"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 0
  +score: 0
  +lastActive: DateTime @1700027968 {#4991
    date: 2023-11-15 06:59:28.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@lily33@lemm.ee"
    "@insomniac_lemon@kbin.social"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4994 …}
  +nested: Doctrine\ORM\PersistentCollection {#4996 …}
  +votes: Doctrine\ORM\PersistentCollection {#4998 …}
  +reports: Doctrine\ORM\PersistentCollection {#5000 …}
  +favourites: Doctrine\ORM\PersistentCollection {#5002 …}
  +notifications: Doctrine\ORM\PersistentCollection {#5004 …}
  -id: 126237
  -bodyTs: "'languag':3 'program':2"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://programming.dev/comment/4837618"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700027968 {#4992
    date: 2023-11-15 06:59:28.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
101 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
102 DENIED moderate
App\Entity\EntryComment {#5108
  +user: Proxies\__CG__\App\Entity\User {#4818 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4993
    +user: App\Entity\User {#4072 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#4817
      +user: Proxies\__CG__\App\Entity\User {#4818 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: App\Entity\EntryComment {#4465
        +user: App\Entity\User {#4478 …}
        +entry: App\Entity\Entry {#2419}
        +magazine: App\Entity\Magazine {#265}
        +image: null
        +parent: null
        +root: null
        +body: "There’s desperate need to a library that’s simpler to use than wlroots or smithay - but unless it supports more protocols (later shell, gamma control, session lock), I don’t think this is a real a alternative yet."
        +lang: "en"
        +isAdult: false
        +favouriteCount: 10
        +score: 0
        +lastActive: DateTime @1700280470 {#4460
          date: 2023-11-18 05:07:50.0 +01:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@ehopperdietzel@lemmy.world"
        ]
        +children: Doctrine\ORM\PersistentCollection {#4466 …}
        +nested: Doctrine\ORM\PersistentCollection {#4468 …}
        +votes: Doctrine\ORM\PersistentCollection {#4470 …}
        +reports: Doctrine\ORM\PersistentCollection {#4472 …}
        +favourites: Doctrine\ORM\PersistentCollection {#4474 …}
        +notifications: Doctrine\ORM\PersistentCollection {#4476 …}
        -id: 124949
        -bodyTs: "'altern':38 'control':26 'desper':3 'gamma':25 'later':23 'librari':7 'lock':28 'need':4 'protocol':22 'real':36 'session':27 'shell':24 'simpler':10 'smithay':16 'support':20 'think':32 'unless':18 'use':12 'wlroot':14 'yet':39"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemm.ee/comment/6130695"
        +editedAt: null
        +createdAt: DateTimeImmutable @1699994997 {#4461
          date: 2023-11-14 21:49:57.0 +01:00
        }
      }
      +root: App\Entity\EntryComment {#4465}
      +body: """
        I was thinking similar, though I'm also still on X with nVidia and XFCE and am in a weird way* with programming.\n
        \n
        I have my own custom XFWM theme that is really minimal (12px title with 8px tall buttons with some being wider to compensate, [somewhat outdated example](https://i.imgur.com/uUrP7Fw.png)) and I'd like to expand upon it (floating titles, inset window buttons, dynamic button width, media integration) but I've looked at examples and don't understand enough to even get just a rectangle for a titlebar (though X I assume for something basic, X would probably still be the easiest).\n
        \n
        *= the only language that I'm interested in (due to it being easy in a style I like while still having performance/capability/flexibility etc) is not popular, and worse is I have lost a bit of hope/confidence in its future (as well as its bus factor reducing further because the person who made the package manager+installer and a book walked away) so I still haven't really done much with it.
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 0
      +score: 0
      +lastActive: DateTime @1700000284 {#4814
        date: 2023-11-14 23:18:04.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
        "@lily33@lemm.ee"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4819 …}
      +nested: Doctrine\ORM\PersistentCollection {#4821 …}
      +votes: Doctrine\ORM\PersistentCollection {#4823 …}
      +reports: Doctrine\ORM\PersistentCollection {#4825 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4827 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4829 …}
      -id: 125255
      -bodyTs: "'/uurp7fw.png))':52 '12px':35 '8px':38 'also':8 'assum':94 'away':165 'basic':97 'bit':138 'book':163 'bus':148 'button':40,65,67 'compens':46 'custom':28 'd':55 'done':172 'due':113 'dynam':66 'easi':117 'easiest':104 'enough':81 'etc':127 'even':83 'exampl':49,76 'expand':58 'factor':149 'float':61 'futur':143 'get':84 'haven':169 'hope/confidence':140 'i.imgur.com':51 'i.imgur.com/uurp7fw.png))':50 'inset':63 'instal':160 'integr':70 'interest':111 'languag':107 'like':56,122 'look':74 'lost':136 'm':7,110 'made':156 'manag':159 'media':69 'minim':34 'much':173 'nvidia':13 'outdat':48 'packag':158 'performance/capability/flexibility':126 'person':154 'popular':130 'probabl':100 'program':23 'realli':33,171 'rectangl':87 'reduc':150 'similar':4 'someth':96 'somewhat':47 'still':9,101,124,168 'style':120 'tall':39 'theme':30 'think':3 'though':5,91 'titl':36,62 'titlebar':90 'understand':80 'upon':59 've':73 'walk':164 'way':21 'weird':20 'well':145 'wider':44 'width':68 'window':64 'wors':132 'would':99 'x':11,92,98 'xfce':15 'xfwm':29"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://kbin.social/m/linux@lemmy.ml/t/626632/-/comment/3565461"
      +editedAt: DateTimeImmutable @1700250978 {#4815
        date: 2023-11-17 20:56:18.0 +01:00
      }
      +createdAt: DateTimeImmutable @1700000284 {#4816
        date: 2023-11-14 23:18:04.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4465}
    +body: "What programming language?"
    +lang: "en"
    +isAdult: false
    +favouriteCount: 0
    +score: 0
    +lastActive: DateTime @1700027968 {#4991
      date: 2023-11-15 06:59:28.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@lily33@lemm.ee"
      "@insomniac_lemon@kbin.social"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4994 …}
    +nested: Doctrine\ORM\PersistentCollection {#4996 …}
    +votes: Doctrine\ORM\PersistentCollection {#4998 …}
    +reports: Doctrine\ORM\PersistentCollection {#5000 …}
    +favourites: Doctrine\ORM\PersistentCollection {#5002 …}
    +notifications: Doctrine\ORM\PersistentCollection {#5004 …}
    -id: 126237
    -bodyTs: "'languag':3 'program':2"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://programming.dev/comment/4837618"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700027968 {#4992
      date: 2023-11-15 06:59:28.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4465}
  +body: """
    Nim-lang. [some code that I actually wrote using Raylib bindings (Naylib)](https://media.kbin.social/media/77/32/7732833e1cd4f944e4e941febdcf9f56579f78499b300c430c37c8ea241be408.png) (+[what it's loading](https://media.kbin.social/media/88/53/885303dd92d06ef6ffa64a1fe64e2c749525059155c9516cdffac06a94c7602c.png))\n
    \n
    I've asked about this on the Fediverse once already and didn't get any responses.\n
    \n
    Also note that bindings for Godot 4.X (or some other not-superheavy Linux-compatible engine that has an editor especially) are a big part of what I want, so some specifics that may work on paper otherwise might not fit the bill either. Also because polygonal art ([meme made with 3.X](https://media.kbin.social/media/ec/22/ec2221e5c5a10ae8511385b07b9814a8919b9cf2444c38d45ce936ef70eaddcc.png), [4.0 eye animation](https://i.imgur.com/mDuPkri.mp4), [not-yet-in-4.X test of someone elses' PR](https://user-images.githubusercontent.com/4397725/273371313-55bcfa94-dcf9-44c2-87b6-3ab6d9bb77ff.png))
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 1
  +score: 0
  +lastActive: DateTime @1700028978 {#5105
    date: 2023-11-15 07:16:18.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@lily33@lemm.ee"
    "@insomniac_lemon@kbin.social"
    "@LeFantome@programming.dev"
  ]
  +children: Doctrine\ORM\PersistentCollection {#5109 …}
  +nested: Doctrine\ORM\PersistentCollection {#5111 …}
  +votes: Doctrine\ORM\PersistentCollection {#5113 …}
  +reports: Doctrine\ORM\PersistentCollection {#5115 …}
  +favourites: Doctrine\ORM\PersistentCollection {#5117 …}
  +notifications: Doctrine\ORM\PersistentCollection {#5119 …}
  -id: 126251
  -bodyTs: "'/4397725/273371313-55bcfa94-dcf9-44c2-87b6-3ab6d9bb77ff.png))':117 '/mdupkri.mp4),':103 '/media/77/32/7732833e1cd4f944e4e941febdcf9f56579f78499b300c430c37c8ea241be408.png)':16 '/media/88/53/885303dd92d06ef6ffa64a1fe64e2c749525059155c9516cdffac06a94c7602c.png))':23 '/media/ec/22/ec2221e5c5a10ae8511385b07b9814a8919b9cf2444c38d45ce936ef70eaddcc.png),':97 '3':93 '4':46,108 '4.0':98 'actual':8 'alreadi':33 'also':40,86 'anim':100 'art':89 'ask':26 'big':65 'bill':84 'bind':12,43 'code':5 'compat':56 'didn':35 'editor':61 'either':85 'els':113 'engin':57 'especi':62 'eye':99 'fedivers':31 'fit':82 'get':37 'godot':45 'i.imgur.com':102 'i.imgur.com/mdupkri.mp4),':101 'lang':3 'linux':55 'linux-compat':54 'load':20 'made':91 'may':75 'media.kbin.social':15,22,96 'media.kbin.social/media/77/32/7732833e1cd4f944e4e941febdcf9f56579f78499b300c430c37c8ea241be408.png)':14 'media.kbin.social/media/88/53/885303dd92d06ef6ffa64a1fe64e2c749525059155c9516cdffac06a94c7602c.png))':21 'media.kbin.social/media/ec/22/ec2221e5c5a10ae8511385b07b9814a8919b9cf2444c38d45ce936ef70eaddcc.png),':95 'meme':90 'might':80 'naylib':13 'nim':2 'nim-lang':1 'not-superheavi':51 'not-yet-in':104 'note':41 'otherwis':79 'paper':78 'part':66 'polygon':88 'pr':114 'raylib':11 'respons':39 'someon':112 'specif':73 'superheavi':53 'test':110 'use':10 'user-images.githubusercontent.com':116 'user-images.githubusercontent.com/4397725/273371313-55bcfa94-dcf9-44c2-87b6-3ab6d9bb77ff.png))':115 've':25 'want':70 'work':76 'wrote':9 'x':47,94,109 'yet':106"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://kbin.social/m/linux@lemmy.ml/t/626632/-/comment/3572006"
  +editedAt: DateTimeImmutable @1700281184 {#5106
    date: 2023-11-18 05:19:44.0 +01:00
  }
  +createdAt: DateTimeImmutable @1700028978 {#5107
    date: 2023-11-15 07:16:18.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
103 DENIED edit
App\Entity\EntryComment {#5108
  +user: Proxies\__CG__\App\Entity\User {#4818 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4993
    +user: App\Entity\User {#4072 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#4817
      +user: Proxies\__CG__\App\Entity\User {#4818 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: App\Entity\EntryComment {#4465
        +user: App\Entity\User {#4478 …}
        +entry: App\Entity\Entry {#2419}
        +magazine: App\Entity\Magazine {#265}
        +image: null
        +parent: null
        +root: null
        +body: "There’s desperate need to a library that’s simpler to use than wlroots or smithay - but unless it supports more protocols (later shell, gamma control, session lock), I don’t think this is a real a alternative yet."
        +lang: "en"
        +isAdult: false
        +favouriteCount: 10
        +score: 0
        +lastActive: DateTime @1700280470 {#4460
          date: 2023-11-18 05:07:50.0 +01:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@ehopperdietzel@lemmy.world"
        ]
        +children: Doctrine\ORM\PersistentCollection {#4466 …}
        +nested: Doctrine\ORM\PersistentCollection {#4468 …}
        +votes: Doctrine\ORM\PersistentCollection {#4470 …}
        +reports: Doctrine\ORM\PersistentCollection {#4472 …}
        +favourites: Doctrine\ORM\PersistentCollection {#4474 …}
        +notifications: Doctrine\ORM\PersistentCollection {#4476 …}
        -id: 124949
        -bodyTs: "'altern':38 'control':26 'desper':3 'gamma':25 'later':23 'librari':7 'lock':28 'need':4 'protocol':22 'real':36 'session':27 'shell':24 'simpler':10 'smithay':16 'support':20 'think':32 'unless':18 'use':12 'wlroot':14 'yet':39"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemm.ee/comment/6130695"
        +editedAt: null
        +createdAt: DateTimeImmutable @1699994997 {#4461
          date: 2023-11-14 21:49:57.0 +01:00
        }
      }
      +root: App\Entity\EntryComment {#4465}
      +body: """
        I was thinking similar, though I'm also still on X with nVidia and XFCE and am in a weird way* with programming.\n
        \n
        I have my own custom XFWM theme that is really minimal (12px title with 8px tall buttons with some being wider to compensate, [somewhat outdated example](https://i.imgur.com/uUrP7Fw.png)) and I'd like to expand upon it (floating titles, inset window buttons, dynamic button width, media integration) but I've looked at examples and don't understand enough to even get just a rectangle for a titlebar (though X I assume for something basic, X would probably still be the easiest).\n
        \n
        *= the only language that I'm interested in (due to it being easy in a style I like while still having performance/capability/flexibility etc) is not popular, and worse is I have lost a bit of hope/confidence in its future (as well as its bus factor reducing further because the person who made the package manager+installer and a book walked away) so I still haven't really done much with it.
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 0
      +score: 0
      +lastActive: DateTime @1700000284 {#4814
        date: 2023-11-14 23:18:04.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
        "@lily33@lemm.ee"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4819 …}
      +nested: Doctrine\ORM\PersistentCollection {#4821 …}
      +votes: Doctrine\ORM\PersistentCollection {#4823 …}
      +reports: Doctrine\ORM\PersistentCollection {#4825 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4827 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4829 …}
      -id: 125255
      -bodyTs: "'/uurp7fw.png))':52 '12px':35 '8px':38 'also':8 'assum':94 'away':165 'basic':97 'bit':138 'book':163 'bus':148 'button':40,65,67 'compens':46 'custom':28 'd':55 'done':172 'due':113 'dynam':66 'easi':117 'easiest':104 'enough':81 'etc':127 'even':83 'exampl':49,76 'expand':58 'factor':149 'float':61 'futur':143 'get':84 'haven':169 'hope/confidence':140 'i.imgur.com':51 'i.imgur.com/uurp7fw.png))':50 'inset':63 'instal':160 'integr':70 'interest':111 'languag':107 'like':56,122 'look':74 'lost':136 'm':7,110 'made':156 'manag':159 'media':69 'minim':34 'much':173 'nvidia':13 'outdat':48 'packag':158 'performance/capability/flexibility':126 'person':154 'popular':130 'probabl':100 'program':23 'realli':33,171 'rectangl':87 'reduc':150 'similar':4 'someth':96 'somewhat':47 'still':9,101,124,168 'style':120 'tall':39 'theme':30 'think':3 'though':5,91 'titl':36,62 'titlebar':90 'understand':80 'upon':59 've':73 'walk':164 'way':21 'weird':20 'well':145 'wider':44 'width':68 'window':64 'wors':132 'would':99 'x':11,92,98 'xfce':15 'xfwm':29"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://kbin.social/m/linux@lemmy.ml/t/626632/-/comment/3565461"
      +editedAt: DateTimeImmutable @1700250978 {#4815
        date: 2023-11-17 20:56:18.0 +01:00
      }
      +createdAt: DateTimeImmutable @1700000284 {#4816
        date: 2023-11-14 23:18:04.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4465}
    +body: "What programming language?"
    +lang: "en"
    +isAdult: false
    +favouriteCount: 0
    +score: 0
    +lastActive: DateTime @1700027968 {#4991
      date: 2023-11-15 06:59:28.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@lily33@lemm.ee"
      "@insomniac_lemon@kbin.social"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4994 …}
    +nested: Doctrine\ORM\PersistentCollection {#4996 …}
    +votes: Doctrine\ORM\PersistentCollection {#4998 …}
    +reports: Doctrine\ORM\PersistentCollection {#5000 …}
    +favourites: Doctrine\ORM\PersistentCollection {#5002 …}
    +notifications: Doctrine\ORM\PersistentCollection {#5004 …}
    -id: 126237
    -bodyTs: "'languag':3 'program':2"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://programming.dev/comment/4837618"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700027968 {#4992
      date: 2023-11-15 06:59:28.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4465}
  +body: """
    Nim-lang. [some code that I actually wrote using Raylib bindings (Naylib)](https://media.kbin.social/media/77/32/7732833e1cd4f944e4e941febdcf9f56579f78499b300c430c37c8ea241be408.png) (+[what it's loading](https://media.kbin.social/media/88/53/885303dd92d06ef6ffa64a1fe64e2c749525059155c9516cdffac06a94c7602c.png))\n
    \n
    I've asked about this on the Fediverse once already and didn't get any responses.\n
    \n
    Also note that bindings for Godot 4.X (or some other not-superheavy Linux-compatible engine that has an editor especially) are a big part of what I want, so some specifics that may work on paper otherwise might not fit the bill either. Also because polygonal art ([meme made with 3.X](https://media.kbin.social/media/ec/22/ec2221e5c5a10ae8511385b07b9814a8919b9cf2444c38d45ce936ef70eaddcc.png), [4.0 eye animation](https://i.imgur.com/mDuPkri.mp4), [not-yet-in-4.X test of someone elses' PR](https://user-images.githubusercontent.com/4397725/273371313-55bcfa94-dcf9-44c2-87b6-3ab6d9bb77ff.png))
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 1
  +score: 0
  +lastActive: DateTime @1700028978 {#5105
    date: 2023-11-15 07:16:18.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@lily33@lemm.ee"
    "@insomniac_lemon@kbin.social"
    "@LeFantome@programming.dev"
  ]
  +children: Doctrine\ORM\PersistentCollection {#5109 …}
  +nested: Doctrine\ORM\PersistentCollection {#5111 …}
  +votes: Doctrine\ORM\PersistentCollection {#5113 …}
  +reports: Doctrine\ORM\PersistentCollection {#5115 …}
  +favourites: Doctrine\ORM\PersistentCollection {#5117 …}
  +notifications: Doctrine\ORM\PersistentCollection {#5119 …}
  -id: 126251
  -bodyTs: "'/4397725/273371313-55bcfa94-dcf9-44c2-87b6-3ab6d9bb77ff.png))':117 '/mdupkri.mp4),':103 '/media/77/32/7732833e1cd4f944e4e941febdcf9f56579f78499b300c430c37c8ea241be408.png)':16 '/media/88/53/885303dd92d06ef6ffa64a1fe64e2c749525059155c9516cdffac06a94c7602c.png))':23 '/media/ec/22/ec2221e5c5a10ae8511385b07b9814a8919b9cf2444c38d45ce936ef70eaddcc.png),':97 '3':93 '4':46,108 '4.0':98 'actual':8 'alreadi':33 'also':40,86 'anim':100 'art':89 'ask':26 'big':65 'bill':84 'bind':12,43 'code':5 'compat':56 'didn':35 'editor':61 'either':85 'els':113 'engin':57 'especi':62 'eye':99 'fedivers':31 'fit':82 'get':37 'godot':45 'i.imgur.com':102 'i.imgur.com/mdupkri.mp4),':101 'lang':3 'linux':55 'linux-compat':54 'load':20 'made':91 'may':75 'media.kbin.social':15,22,96 'media.kbin.social/media/77/32/7732833e1cd4f944e4e941febdcf9f56579f78499b300c430c37c8ea241be408.png)':14 'media.kbin.social/media/88/53/885303dd92d06ef6ffa64a1fe64e2c749525059155c9516cdffac06a94c7602c.png))':21 'media.kbin.social/media/ec/22/ec2221e5c5a10ae8511385b07b9814a8919b9cf2444c38d45ce936ef70eaddcc.png),':95 'meme':90 'might':80 'naylib':13 'nim':2 'nim-lang':1 'not-superheavi':51 'not-yet-in':104 'note':41 'otherwis':79 'paper':78 'part':66 'polygon':88 'pr':114 'raylib':11 'respons':39 'someon':112 'specif':73 'superheavi':53 'test':110 'use':10 'user-images.githubusercontent.com':116 'user-images.githubusercontent.com/4397725/273371313-55bcfa94-dcf9-44c2-87b6-3ab6d9bb77ff.png))':115 've':25 'want':70 'work':76 'wrote':9 'x':47,94,109 'yet':106"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://kbin.social/m/linux@lemmy.ml/t/626632/-/comment/3572006"
  +editedAt: DateTimeImmutable @1700281184 {#5106
    date: 2023-11-18 05:19:44.0 +01:00
  }
  +createdAt: DateTimeImmutable @1700028978 {#5107
    date: 2023-11-15 07:16:18.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
104 DENIED moderate
App\Entity\EntryComment {#5108
  +user: Proxies\__CG__\App\Entity\User {#4818 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4993
    +user: App\Entity\User {#4072 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#4817
      +user: Proxies\__CG__\App\Entity\User {#4818 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: App\Entity\EntryComment {#4465
        +user: App\Entity\User {#4478 …}
        +entry: App\Entity\Entry {#2419}
        +magazine: App\Entity\Magazine {#265}
        +image: null
        +parent: null
        +root: null
        +body: "There’s desperate need to a library that’s simpler to use than wlroots or smithay - but unless it supports more protocols (later shell, gamma control, session lock), I don’t think this is a real a alternative yet."
        +lang: "en"
        +isAdult: false
        +favouriteCount: 10
        +score: 0
        +lastActive: DateTime @1700280470 {#4460
          date: 2023-11-18 05:07:50.0 +01:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@ehopperdietzel@lemmy.world"
        ]
        +children: Doctrine\ORM\PersistentCollection {#4466 …}
        +nested: Doctrine\ORM\PersistentCollection {#4468 …}
        +votes: Doctrine\ORM\PersistentCollection {#4470 …}
        +reports: Doctrine\ORM\PersistentCollection {#4472 …}
        +favourites: Doctrine\ORM\PersistentCollection {#4474 …}
        +notifications: Doctrine\ORM\PersistentCollection {#4476 …}
        -id: 124949
        -bodyTs: "'altern':38 'control':26 'desper':3 'gamma':25 'later':23 'librari':7 'lock':28 'need':4 'protocol':22 'real':36 'session':27 'shell':24 'simpler':10 'smithay':16 'support':20 'think':32 'unless':18 'use':12 'wlroot':14 'yet':39"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemm.ee/comment/6130695"
        +editedAt: null
        +createdAt: DateTimeImmutable @1699994997 {#4461
          date: 2023-11-14 21:49:57.0 +01:00
        }
      }
      +root: App\Entity\EntryComment {#4465}
      +body: """
        I was thinking similar, though I'm also still on X with nVidia and XFCE and am in a weird way* with programming.\n
        \n
        I have my own custom XFWM theme that is really minimal (12px title with 8px tall buttons with some being wider to compensate, [somewhat outdated example](https://i.imgur.com/uUrP7Fw.png)) and I'd like to expand upon it (floating titles, inset window buttons, dynamic button width, media integration) but I've looked at examples and don't understand enough to even get just a rectangle for a titlebar (though X I assume for something basic, X would probably still be the easiest).\n
        \n
        *= the only language that I'm interested in (due to it being easy in a style I like while still having performance/capability/flexibility etc) is not popular, and worse is I have lost a bit of hope/confidence in its future (as well as its bus factor reducing further because the person who made the package manager+installer and a book walked away) so I still haven't really done much with it.
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 0
      +score: 0
      +lastActive: DateTime @1700000284 {#4814
        date: 2023-11-14 23:18:04.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
        "@lily33@lemm.ee"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4819 …}
      +nested: Doctrine\ORM\PersistentCollection {#4821 …}
      +votes: Doctrine\ORM\PersistentCollection {#4823 …}
      +reports: Doctrine\ORM\PersistentCollection {#4825 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4827 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4829 …}
      -id: 125255
      -bodyTs: "'/uurp7fw.png))':52 '12px':35 '8px':38 'also':8 'assum':94 'away':165 'basic':97 'bit':138 'book':163 'bus':148 'button':40,65,67 'compens':46 'custom':28 'd':55 'done':172 'due':113 'dynam':66 'easi':117 'easiest':104 'enough':81 'etc':127 'even':83 'exampl':49,76 'expand':58 'factor':149 'float':61 'futur':143 'get':84 'haven':169 'hope/confidence':140 'i.imgur.com':51 'i.imgur.com/uurp7fw.png))':50 'inset':63 'instal':160 'integr':70 'interest':111 'languag':107 'like':56,122 'look':74 'lost':136 'm':7,110 'made':156 'manag':159 'media':69 'minim':34 'much':173 'nvidia':13 'outdat':48 'packag':158 'performance/capability/flexibility':126 'person':154 'popular':130 'probabl':100 'program':23 'realli':33,171 'rectangl':87 'reduc':150 'similar':4 'someth':96 'somewhat':47 'still':9,101,124,168 'style':120 'tall':39 'theme':30 'think':3 'though':5,91 'titl':36,62 'titlebar':90 'understand':80 'upon':59 've':73 'walk':164 'way':21 'weird':20 'well':145 'wider':44 'width':68 'window':64 'wors':132 'would':99 'x':11,92,98 'xfce':15 'xfwm':29"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://kbin.social/m/linux@lemmy.ml/t/626632/-/comment/3565461"
      +editedAt: DateTimeImmutable @1700250978 {#4815
        date: 2023-11-17 20:56:18.0 +01:00
      }
      +createdAt: DateTimeImmutable @1700000284 {#4816
        date: 2023-11-14 23:18:04.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4465}
    +body: "What programming language?"
    +lang: "en"
    +isAdult: false
    +favouriteCount: 0
    +score: 0
    +lastActive: DateTime @1700027968 {#4991
      date: 2023-11-15 06:59:28.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@lily33@lemm.ee"
      "@insomniac_lemon@kbin.social"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4994 …}
    +nested: Doctrine\ORM\PersistentCollection {#4996 …}
    +votes: Doctrine\ORM\PersistentCollection {#4998 …}
    +reports: Doctrine\ORM\PersistentCollection {#5000 …}
    +favourites: Doctrine\ORM\PersistentCollection {#5002 …}
    +notifications: Doctrine\ORM\PersistentCollection {#5004 …}
    -id: 126237
    -bodyTs: "'languag':3 'program':2"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://programming.dev/comment/4837618"
    +editedAt: null
    +createdAt: DateTimeImmutable @1700027968 {#4992
      date: 2023-11-15 06:59:28.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4465}
  +body: """
    Nim-lang. [some code that I actually wrote using Raylib bindings (Naylib)](https://media.kbin.social/media/77/32/7732833e1cd4f944e4e941febdcf9f56579f78499b300c430c37c8ea241be408.png) (+[what it's loading](https://media.kbin.social/media/88/53/885303dd92d06ef6ffa64a1fe64e2c749525059155c9516cdffac06a94c7602c.png))\n
    \n
    I've asked about this on the Fediverse once already and didn't get any responses.\n
    \n
    Also note that bindings for Godot 4.X (or some other not-superheavy Linux-compatible engine that has an editor especially) are a big part of what I want, so some specifics that may work on paper otherwise might not fit the bill either. Also because polygonal art ([meme made with 3.X](https://media.kbin.social/media/ec/22/ec2221e5c5a10ae8511385b07b9814a8919b9cf2444c38d45ce936ef70eaddcc.png), [4.0 eye animation](https://i.imgur.com/mDuPkri.mp4), [not-yet-in-4.X test of someone elses' PR](https://user-images.githubusercontent.com/4397725/273371313-55bcfa94-dcf9-44c2-87b6-3ab6d9bb77ff.png))
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 1
  +score: 0
  +lastActive: DateTime @1700028978 {#5105
    date: 2023-11-15 07:16:18.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@lily33@lemm.ee"
    "@insomniac_lemon@kbin.social"
    "@LeFantome@programming.dev"
  ]
  +children: Doctrine\ORM\PersistentCollection {#5109 …}
  +nested: Doctrine\ORM\PersistentCollection {#5111 …}
  +votes: Doctrine\ORM\PersistentCollection {#5113 …}
  +reports: Doctrine\ORM\PersistentCollection {#5115 …}
  +favourites: Doctrine\ORM\PersistentCollection {#5117 …}
  +notifications: Doctrine\ORM\PersistentCollection {#5119 …}
  -id: 126251
  -bodyTs: "'/4397725/273371313-55bcfa94-dcf9-44c2-87b6-3ab6d9bb77ff.png))':117 '/mdupkri.mp4),':103 '/media/77/32/7732833e1cd4f944e4e941febdcf9f56579f78499b300c430c37c8ea241be408.png)':16 '/media/88/53/885303dd92d06ef6ffa64a1fe64e2c749525059155c9516cdffac06a94c7602c.png))':23 '/media/ec/22/ec2221e5c5a10ae8511385b07b9814a8919b9cf2444c38d45ce936ef70eaddcc.png),':97 '3':93 '4':46,108 '4.0':98 'actual':8 'alreadi':33 'also':40,86 'anim':100 'art':89 'ask':26 'big':65 'bill':84 'bind':12,43 'code':5 'compat':56 'didn':35 'editor':61 'either':85 'els':113 'engin':57 'especi':62 'eye':99 'fedivers':31 'fit':82 'get':37 'godot':45 'i.imgur.com':102 'i.imgur.com/mdupkri.mp4),':101 'lang':3 'linux':55 'linux-compat':54 'load':20 'made':91 'may':75 'media.kbin.social':15,22,96 'media.kbin.social/media/77/32/7732833e1cd4f944e4e941febdcf9f56579f78499b300c430c37c8ea241be408.png)':14 'media.kbin.social/media/88/53/885303dd92d06ef6ffa64a1fe64e2c749525059155c9516cdffac06a94c7602c.png))':21 'media.kbin.social/media/ec/22/ec2221e5c5a10ae8511385b07b9814a8919b9cf2444c38d45ce936ef70eaddcc.png),':95 'meme':90 'might':80 'naylib':13 'nim':2 'nim-lang':1 'not-superheavi':51 'not-yet-in':104 'note':41 'otherwis':79 'paper':78 'part':66 'polygon':88 'pr':114 'raylib':11 'respons':39 'someon':112 'specif':73 'superheavi':53 'test':110 'use':10 'user-images.githubusercontent.com':116 'user-images.githubusercontent.com/4397725/273371313-55bcfa94-dcf9-44c2-87b6-3ab6d9bb77ff.png))':115 've':25 'want':70 'work':76 'wrote':9 'x':47,94,109 'yet':106"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://kbin.social/m/linux@lemmy.ml/t/626632/-/comment/3572006"
  +editedAt: DateTimeImmutable @1700281184 {#5106
    date: 2023-11-18 05:19:44.0 +01:00
  }
  +createdAt: DateTimeImmutable @1700028978 {#5107
    date: 2023-11-15 07:16:18.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
105 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
106 DENIED moderate
App\Entity\EntryComment {#4833
  +user: App\Entity\User {#4072 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4465
    +user: App\Entity\User {#4478 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: "There’s desperate need to a library that’s simpler to use than wlroots or smithay - but unless it supports more protocols (later shell, gamma control, session lock), I don’t think this is a real a alternative yet."
    +lang: "en"
    +isAdult: false
    +favouriteCount: 10
    +score: 0
    +lastActive: DateTime @1700280470 {#4460
      date: 2023-11-18 05:07:50.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4466 …}
    +nested: Doctrine\ORM\PersistentCollection {#4468 …}
    +votes: Doctrine\ORM\PersistentCollection {#4470 …}
    +reports: Doctrine\ORM\PersistentCollection {#4472 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4474 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4476 …}
    -id: 124949
    -bodyTs: "'altern':38 'control':26 'desper':3 'gamma':25 'later':23 'librari':7 'lock':28 'need':4 'protocol':22 'real':36 'session':27 'shell':24 'simpler':10 'smithay':16 'support':20 'think':32 'unless':18 'use':12 'wlroot':14 'yet':39"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemm.ee/comment/6130695"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699994997 {#4461
      date: 2023-11-14 21:49:57.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4465}
  +body: """
    SWC has been out there for a long time. It came before Wlroots I think.\n
    \n
    [github.com/michaelforney/swc](https://github.com/michaelforney/swc)
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 2
  +score: 0
  +lastActive: DateTime @1700025646 {#4831
    date: 2023-11-15 06:20:46.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@lily33@lemm.ee"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4834 …}
  +nested: Doctrine\ORM\PersistentCollection {#4836 …}
  +votes: Doctrine\ORM\PersistentCollection {#4838 …}
  +reports: Doctrine\ORM\PersistentCollection {#4840 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4842 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4844 …}
  -id: 126189
  -bodyTs: "'/michaelforney/swc](https://github.com/michaelforney/swc)':18 'came':11 'github.com':17 'github.com/michaelforney/swc](https://github.com/michaelforney/swc)':16 'long':8 'swc':1 'think':15 'time':9 'wlroot':13"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://programming.dev/comment/4837005"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700025646 {#4832
    date: 2023-11-15 06:20:46.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
107 DENIED edit
App\Entity\EntryComment {#4833
  +user: App\Entity\User {#4072 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4465
    +user: App\Entity\User {#4478 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: "There’s desperate need to a library that’s simpler to use than wlroots or smithay - but unless it supports more protocols (later shell, gamma control, session lock), I don’t think this is a real a alternative yet."
    +lang: "en"
    +isAdult: false
    +favouriteCount: 10
    +score: 0
    +lastActive: DateTime @1700280470 {#4460
      date: 2023-11-18 05:07:50.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4466 …}
    +nested: Doctrine\ORM\PersistentCollection {#4468 …}
    +votes: Doctrine\ORM\PersistentCollection {#4470 …}
    +reports: Doctrine\ORM\PersistentCollection {#4472 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4474 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4476 …}
    -id: 124949
    -bodyTs: "'altern':38 'control':26 'desper':3 'gamma':25 'later':23 'librari':7 'lock':28 'need':4 'protocol':22 'real':36 'session':27 'shell':24 'simpler':10 'smithay':16 'support':20 'think':32 'unless':18 'use':12 'wlroot':14 'yet':39"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemm.ee/comment/6130695"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699994997 {#4461
      date: 2023-11-14 21:49:57.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4465}
  +body: """
    SWC has been out there for a long time. It came before Wlroots I think.\n
    \n
    [github.com/michaelforney/swc](https://github.com/michaelforney/swc)
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 2
  +score: 0
  +lastActive: DateTime @1700025646 {#4831
    date: 2023-11-15 06:20:46.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@lily33@lemm.ee"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4834 …}
  +nested: Doctrine\ORM\PersistentCollection {#4836 …}
  +votes: Doctrine\ORM\PersistentCollection {#4838 …}
  +reports: Doctrine\ORM\PersistentCollection {#4840 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4842 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4844 …}
  -id: 126189
  -bodyTs: "'/michaelforney/swc](https://github.com/michaelforney/swc)':18 'came':11 'github.com':17 'github.com/michaelforney/swc](https://github.com/michaelforney/swc)':16 'long':8 'swc':1 'think':15 'time':9 'wlroot':13"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://programming.dev/comment/4837005"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700025646 {#4832
    date: 2023-11-15 06:20:46.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
108 DENIED moderate
App\Entity\EntryComment {#4833
  +user: App\Entity\User {#4072 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4465
    +user: App\Entity\User {#4478 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: "There’s desperate need to a library that’s simpler to use than wlroots or smithay - but unless it supports more protocols (later shell, gamma control, session lock), I don’t think this is a real a alternative yet."
    +lang: "en"
    +isAdult: false
    +favouriteCount: 10
    +score: 0
    +lastActive: DateTime @1700280470 {#4460
      date: 2023-11-18 05:07:50.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4466 …}
    +nested: Doctrine\ORM\PersistentCollection {#4468 …}
    +votes: Doctrine\ORM\PersistentCollection {#4470 …}
    +reports: Doctrine\ORM\PersistentCollection {#4472 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4474 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4476 …}
    -id: 124949
    -bodyTs: "'altern':38 'control':26 'desper':3 'gamma':25 'later':23 'librari':7 'lock':28 'need':4 'protocol':22 'real':36 'session':27 'shell':24 'simpler':10 'smithay':16 'support':20 'think':32 'unless':18 'use':12 'wlroot':14 'yet':39"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemm.ee/comment/6130695"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699994997 {#4461
      date: 2023-11-14 21:49:57.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4465}
  +body: """
    SWC has been out there for a long time. It came before Wlroots I think.\n
    \n
    [github.com/michaelforney/swc](https://github.com/michaelforney/swc)
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 2
  +score: 0
  +lastActive: DateTime @1700025646 {#4831
    date: 2023-11-15 06:20:46.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@lily33@lemm.ee"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4834 …}
  +nested: Doctrine\ORM\PersistentCollection {#4836 …}
  +votes: Doctrine\ORM\PersistentCollection {#4838 …}
  +reports: Doctrine\ORM\PersistentCollection {#4840 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4842 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4844 …}
  -id: 126189
  -bodyTs: "'/michaelforney/swc](https://github.com/michaelforney/swc)':18 'came':11 'github.com':17 'github.com/michaelforney/swc](https://github.com/michaelforney/swc)':16 'long':8 'swc':1 'think':15 'time':9 'wlroot':13"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://programming.dev/comment/4837005"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700025646 {#4832
    date: 2023-11-15 06:20:46.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
109 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
110 DENIED moderate
App\Entity\EntryComment {#4848
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4465
    +user: App\Entity\User {#4478 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: "There’s desperate need to a library that’s simpler to use than wlroots or smithay - but unless it supports more protocols (later shell, gamma control, session lock), I don’t think this is a real a alternative yet."
    +lang: "en"
    +isAdult: false
    +favouriteCount: 10
    +score: 0
    +lastActive: DateTime @1700280470 {#4460
      date: 2023-11-18 05:07:50.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4466 …}
    +nested: Doctrine\ORM\PersistentCollection {#4468 …}
    +votes: Doctrine\ORM\PersistentCollection {#4470 …}
    +reports: Doctrine\ORM\PersistentCollection {#4472 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4474 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4476 …}
    -id: 124949
    -bodyTs: "'altern':38 'control':26 'desper':3 'gamma':25 'later':23 'librari':7 'lock':28 'need':4 'protocol':22 'real':36 'session':27 'shell':24 'simpler':10 'smithay':16 'support':20 'think':32 'unless':18 'use':12 'wlroot':14 'yet':39"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemm.ee/comment/6130695"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699994997 {#4461
      date: 2023-11-14 21:49:57.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4465}
  +body: "I completely agree. I invest time in implementing protocols within the library, allowing it to handle many tasks autonomously, thus relieving developers from manually wiring everything themselves—without compromising flexibility oc. Regarding “later shell,” did you mean “layer shell”? Developers can certainly still implement protocols not included with Louvre on their own, but that’s not quite the intended approach."
  +lang: "en"
  +isAdult: false
  +favouriteCount: 10
  +score: 0
  +lastActive: DateTime @1699995938 {#4846
    date: 2023-11-14 22:05:38.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@lily33@lemm.ee"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4849 …}
  +nested: Doctrine\ORM\PersistentCollection {#4851 …}
  +votes: Doctrine\ORM\PersistentCollection {#4853 …}
  +reports: Doctrine\ORM\PersistentCollection {#4855 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4857 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4859 …}
  -id: 125017
  -bodyTs: "'agre':3 'allow':13 'approach':60 'autonom':19 'certain':42 'complet':2 'compromis':29 'develop':22,40 'everyth':26 'flexibl':30 'handl':16 'implement':8,44 'includ':47 'intend':59 'invest':5 'later':33 'layer':38 'librari':12 'louvr':49 'mani':17 'manual':24 'mean':37 'oc':31 'protocol':9,45 'quit':57 'regard':32 'reliev':21 'shell':34,39 'still':43 'task':18 'thus':20 'time':6 'wire':25 'within':10 'without':28"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5313833"
  +editedAt: null
  +createdAt: DateTimeImmutable @1699995938 {#4847
    date: 2023-11-14 22:05:38.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
111 DENIED edit
App\Entity\EntryComment {#4848
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4465
    +user: App\Entity\User {#4478 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: "There’s desperate need to a library that’s simpler to use than wlroots or smithay - but unless it supports more protocols (later shell, gamma control, session lock), I don’t think this is a real a alternative yet."
    +lang: "en"
    +isAdult: false
    +favouriteCount: 10
    +score: 0
    +lastActive: DateTime @1700280470 {#4460
      date: 2023-11-18 05:07:50.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4466 …}
    +nested: Doctrine\ORM\PersistentCollection {#4468 …}
    +votes: Doctrine\ORM\PersistentCollection {#4470 …}
    +reports: Doctrine\ORM\PersistentCollection {#4472 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4474 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4476 …}
    -id: 124949
    -bodyTs: "'altern':38 'control':26 'desper':3 'gamma':25 'later':23 'librari':7 'lock':28 'need':4 'protocol':22 'real':36 'session':27 'shell':24 'simpler':10 'smithay':16 'support':20 'think':32 'unless':18 'use':12 'wlroot':14 'yet':39"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemm.ee/comment/6130695"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699994997 {#4461
      date: 2023-11-14 21:49:57.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4465}
  +body: "I completely agree. I invest time in implementing protocols within the library, allowing it to handle many tasks autonomously, thus relieving developers from manually wiring everything themselves—without compromising flexibility oc. Regarding “later shell,” did you mean “layer shell”? Developers can certainly still implement protocols not included with Louvre on their own, but that’s not quite the intended approach."
  +lang: "en"
  +isAdult: false
  +favouriteCount: 10
  +score: 0
  +lastActive: DateTime @1699995938 {#4846
    date: 2023-11-14 22:05:38.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@lily33@lemm.ee"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4849 …}
  +nested: Doctrine\ORM\PersistentCollection {#4851 …}
  +votes: Doctrine\ORM\PersistentCollection {#4853 …}
  +reports: Doctrine\ORM\PersistentCollection {#4855 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4857 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4859 …}
  -id: 125017
  -bodyTs: "'agre':3 'allow':13 'approach':60 'autonom':19 'certain':42 'complet':2 'compromis':29 'develop':22,40 'everyth':26 'flexibl':30 'handl':16 'implement':8,44 'includ':47 'intend':59 'invest':5 'later':33 'layer':38 'librari':12 'louvr':49 'mani':17 'manual':24 'mean':37 'oc':31 'protocol':9,45 'quit':57 'regard':32 'reliev':21 'shell':34,39 'still':43 'task':18 'thus':20 'time':6 'wire':25 'within':10 'without':28"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5313833"
  +editedAt: null
  +createdAt: DateTimeImmutable @1699995938 {#4847
    date: 2023-11-14 22:05:38.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
112 DENIED moderate
App\Entity\EntryComment {#4848
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4465
    +user: App\Entity\User {#4478 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: "There’s desperate need to a library that’s simpler to use than wlroots or smithay - but unless it supports more protocols (later shell, gamma control, session lock), I don’t think this is a real a alternative yet."
    +lang: "en"
    +isAdult: false
    +favouriteCount: 10
    +score: 0
    +lastActive: DateTime @1700280470 {#4460
      date: 2023-11-18 05:07:50.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4466 …}
    +nested: Doctrine\ORM\PersistentCollection {#4468 …}
    +votes: Doctrine\ORM\PersistentCollection {#4470 …}
    +reports: Doctrine\ORM\PersistentCollection {#4472 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4474 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4476 …}
    -id: 124949
    -bodyTs: "'altern':38 'control':26 'desper':3 'gamma':25 'later':23 'librari':7 'lock':28 'need':4 'protocol':22 'real':36 'session':27 'shell':24 'simpler':10 'smithay':16 'support':20 'think':32 'unless':18 'use':12 'wlroot':14 'yet':39"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemm.ee/comment/6130695"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699994997 {#4461
      date: 2023-11-14 21:49:57.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4465}
  +body: "I completely agree. I invest time in implementing protocols within the library, allowing it to handle many tasks autonomously, thus relieving developers from manually wiring everything themselves—without compromising flexibility oc. Regarding “later shell,” did you mean “layer shell”? Developers can certainly still implement protocols not included with Louvre on their own, but that’s not quite the intended approach."
  +lang: "en"
  +isAdult: false
  +favouriteCount: 10
  +score: 0
  +lastActive: DateTime @1699995938 {#4846
    date: 2023-11-14 22:05:38.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@lily33@lemm.ee"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4849 …}
  +nested: Doctrine\ORM\PersistentCollection {#4851 …}
  +votes: Doctrine\ORM\PersistentCollection {#4853 …}
  +reports: Doctrine\ORM\PersistentCollection {#4855 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4857 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4859 …}
  -id: 125017
  -bodyTs: "'agre':3 'allow':13 'approach':60 'autonom':19 'certain':42 'complet':2 'compromis':29 'develop':22,40 'everyth':26 'flexibl':30 'handl':16 'implement':8,44 'includ':47 'intend':59 'invest':5 'later':33 'layer':38 'librari':12 'louvr':49 'mani':17 'manual':24 'mean':37 'oc':31 'protocol':9,45 'quit':57 'regard':32 'reliev':21 'shell':34,39 'still':43 'task':18 'thus':20 'time':6 'wire':25 'within':10 'without':28"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5313833"
  +editedAt: null
  +createdAt: DateTimeImmutable @1699995938 {#4847
    date: 2023-11-14 22:05:38.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
113 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
114 DENIED moderate
App\Entity\EntryComment {#4538
  +user: App\Entity\User {#4551 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: null
  +root: null
  +body: "Neat"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 1
  +score: 0
  +lastActive: DateTime @1699993763 {#4533
    date: 2023-11-14 21:29:23.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4539 …}
  +nested: Doctrine\ORM\PersistentCollection {#4541 …}
  +votes: Doctrine\ORM\PersistentCollection {#4543 …}
  +reports: Doctrine\ORM\PersistentCollection {#4545 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4547 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4549 …}
  -id: 124871
  -bodyTs: "'neat':1"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.ml/comment/5800036"
  +editedAt: null
  +createdAt: DateTimeImmutable @1699993763 {#4534
    date: 2023-11-14 21:29:23.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
115 DENIED edit
App\Entity\EntryComment {#4538
  +user: App\Entity\User {#4551 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: null
  +root: null
  +body: "Neat"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 1
  +score: 0
  +lastActive: DateTime @1699993763 {#4533
    date: 2023-11-14 21:29:23.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4539 …}
  +nested: Doctrine\ORM\PersistentCollection {#4541 …}
  +votes: Doctrine\ORM\PersistentCollection {#4543 …}
  +reports: Doctrine\ORM\PersistentCollection {#4545 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4547 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4549 …}
  -id: 124871
  -bodyTs: "'neat':1"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.ml/comment/5800036"
  +editedAt: null
  +createdAt: DateTimeImmutable @1699993763 {#4534
    date: 2023-11-14 21:29:23.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
116 DENIED moderate
App\Entity\EntryComment {#4538
  +user: App\Entity\User {#4551 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: null
  +root: null
  +body: "Neat"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 1
  +score: 0
  +lastActive: DateTime @1699993763 {#4533
    date: 2023-11-14 21:29:23.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4539 …}
  +nested: Doctrine\ORM\PersistentCollection {#4541 …}
  +votes: Doctrine\ORM\PersistentCollection {#4543 …}
  +reports: Doctrine\ORM\PersistentCollection {#4545 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4547 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4549 …}
  -id: 124871
  -bodyTs: "'neat':1"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.ml/comment/5800036"
  +editedAt: null
  +createdAt: DateTimeImmutable @1699993763 {#4534
    date: 2023-11-14 21:29:23.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
117 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
118 DENIED moderate
App\Entity\EntryComment {#4614
  +user: App\Entity\User {#4627 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: null
  +root: null
  +body: "ngl Im more interested in the dock and what protocols it uses. I’ve been missing latte dock since I migrated to wayland"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 12
  +score: 0
  +lastActive: DateTime @1700252842 {#4608
    date: 2023-11-17 21:27:22.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4615 …}
  +nested: Doctrine\ORM\PersistentCollection {#4617 …}
  +votes: Doctrine\ORM\PersistentCollection {#4619 …}
  +reports: Doctrine\ORM\PersistentCollection {#4621 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4623 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4625 …}
  -id: 124817
  -bodyTs: "'dock':7,18 'im':2 'interest':4 'latt':17 'migrat':21 'miss':16 'ngl':1 'protocol':10 'sinc':19 'use':12 've':14 'wayland':23"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.dbzer0.com/comment/5094973"
  +editedAt: DateTimeImmutable @1700239722 {#4609
    date: 2023-11-17 17:48:42.0 +01:00
  }
  +createdAt: DateTimeImmutable @1699992719 {#4610
    date: 2023-11-14 21:11:59.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
119 DENIED edit
App\Entity\EntryComment {#4614
  +user: App\Entity\User {#4627 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: null
  +root: null
  +body: "ngl Im more interested in the dock and what protocols it uses. I’ve been missing latte dock since I migrated to wayland"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 12
  +score: 0
  +lastActive: DateTime @1700252842 {#4608
    date: 2023-11-17 21:27:22.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4615 …}
  +nested: Doctrine\ORM\PersistentCollection {#4617 …}
  +votes: Doctrine\ORM\PersistentCollection {#4619 …}
  +reports: Doctrine\ORM\PersistentCollection {#4621 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4623 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4625 …}
  -id: 124817
  -bodyTs: "'dock':7,18 'im':2 'interest':4 'latt':17 'migrat':21 'miss':16 'ngl':1 'protocol':10 'sinc':19 'use':12 've':14 'wayland':23"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.dbzer0.com/comment/5094973"
  +editedAt: DateTimeImmutable @1700239722 {#4609
    date: 2023-11-17 17:48:42.0 +01:00
  }
  +createdAt: DateTimeImmutable @1699992719 {#4610
    date: 2023-11-14 21:11:59.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
120 DENIED moderate
App\Entity\EntryComment {#4614
  +user: App\Entity\User {#4627 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: null
  +root: null
  +body: "ngl Im more interested in the dock and what protocols it uses. I’ve been missing latte dock since I migrated to wayland"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 12
  +score: 0
  +lastActive: DateTime @1700252842 {#4608
    date: 2023-11-17 21:27:22.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4615 …}
  +nested: Doctrine\ORM\PersistentCollection {#4617 …}
  +votes: Doctrine\ORM\PersistentCollection {#4619 …}
  +reports: Doctrine\ORM\PersistentCollection {#4621 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4623 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4625 …}
  -id: 124817
  -bodyTs: "'dock':7,18 'im':2 'interest':4 'latt':17 'migrat':21 'miss':16 'ngl':1 'protocol':10 'sinc':19 'use':12 've':14 'wayland':23"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.dbzer0.com/comment/5094973"
  +editedAt: DateTimeImmutable @1700239722 {#4609
    date: 2023-11-17 17:48:42.0 +01:00
  }
  +createdAt: DateTimeImmutable @1699992719 {#4610
    date: 2023-11-14 21:11:59.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
121 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
122 DENIED moderate
App\Entity\EntryComment {#4786
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4614
    +user: App\Entity\User {#4627 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: "ngl Im more interested in the dock and what protocols it uses. I’ve been missing latte dock since I migrated to wayland"
    +lang: "en"
    +isAdult: false
    +favouriteCount: 12
    +score: 0
    +lastActive: DateTime @1700252842 {#4608
      date: 2023-11-17 21:27:22.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4615 …}
    +nested: Doctrine\ORM\PersistentCollection {#4617 …}
    +votes: Doctrine\ORM\PersistentCollection {#4619 …}
    +reports: Doctrine\ORM\PersistentCollection {#4621 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4623 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4625 …}
    -id: 124817
    -bodyTs: "'dock':7,18 'im':2 'interest':4 'latt':17 'migrat':21 'miss':16 'ngl':1 'protocol':10 'sinc':19 'use':12 've':14 'wayland':23"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.dbzer0.com/comment/5094973"
    +editedAt: DateTimeImmutable @1700239722 {#4609
      date: 2023-11-17 17:48:42.0 +01:00
    }
    +createdAt: DateTimeImmutable @1699992719 {#4610
      date: 2023-11-14 21:11:59.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4614}
  +body: "The dock is rendered directly by the compositor in one of the examples; it’s not an external application as it ideally should be. It doesn’t rely on any intricate protocols or systemd services to monitor the states of apps. I added it solely for demonstration purposes."
  +lang: "en"
  +isAdult: false
  +favouriteCount: 12
  +score: 0
  +lastActive: DateTime @1699993266 {#4784
    date: 2023-11-14 21:21:06.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@drwankingstein@lemmy.dbzer0.com"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4787 …}
  +nested: Doctrine\ORM\PersistentCollection {#4789 …}
  +votes: Doctrine\ORM\PersistentCollection {#4791 …}
  +reports: Doctrine\ORM\PersistentCollection {#4793 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4795 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4797 …}
  -id: 124847
  -bodyTs: "'ad':43 'app':41 'applic':19 'compositor':8 'demonstr':47 'direct':5 'dock':2 'doesn':26 'exampl':13 'extern':18 'ideal':22 'intric':31 'monitor':37 'one':10 'protocol':32 'purpos':48 'reli':28 'render':4 'servic':35 'sole':45 'state':39 'systemd':34"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5312945"
  +editedAt: null
  +createdAt: DateTimeImmutable @1699993266 {#4785
    date: 2023-11-14 21:21:06.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
123 DENIED edit
App\Entity\EntryComment {#4786
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4614
    +user: App\Entity\User {#4627 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: "ngl Im more interested in the dock and what protocols it uses. I’ve been missing latte dock since I migrated to wayland"
    +lang: "en"
    +isAdult: false
    +favouriteCount: 12
    +score: 0
    +lastActive: DateTime @1700252842 {#4608
      date: 2023-11-17 21:27:22.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4615 …}
    +nested: Doctrine\ORM\PersistentCollection {#4617 …}
    +votes: Doctrine\ORM\PersistentCollection {#4619 …}
    +reports: Doctrine\ORM\PersistentCollection {#4621 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4623 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4625 …}
    -id: 124817
    -bodyTs: "'dock':7,18 'im':2 'interest':4 'latt':17 'migrat':21 'miss':16 'ngl':1 'protocol':10 'sinc':19 'use':12 've':14 'wayland':23"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.dbzer0.com/comment/5094973"
    +editedAt: DateTimeImmutable @1700239722 {#4609
      date: 2023-11-17 17:48:42.0 +01:00
    }
    +createdAt: DateTimeImmutable @1699992719 {#4610
      date: 2023-11-14 21:11:59.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4614}
  +body: "The dock is rendered directly by the compositor in one of the examples; it’s not an external application as it ideally should be. It doesn’t rely on any intricate protocols or systemd services to monitor the states of apps. I added it solely for demonstration purposes."
  +lang: "en"
  +isAdult: false
  +favouriteCount: 12
  +score: 0
  +lastActive: DateTime @1699993266 {#4784
    date: 2023-11-14 21:21:06.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@drwankingstein@lemmy.dbzer0.com"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4787 …}
  +nested: Doctrine\ORM\PersistentCollection {#4789 …}
  +votes: Doctrine\ORM\PersistentCollection {#4791 …}
  +reports: Doctrine\ORM\PersistentCollection {#4793 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4795 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4797 …}
  -id: 124847
  -bodyTs: "'ad':43 'app':41 'applic':19 'compositor':8 'demonstr':47 'direct':5 'dock':2 'doesn':26 'exampl':13 'extern':18 'ideal':22 'intric':31 'monitor':37 'one':10 'protocol':32 'purpos':48 'reli':28 'render':4 'servic':35 'sole':45 'state':39 'systemd':34"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5312945"
  +editedAt: null
  +createdAt: DateTimeImmutable @1699993266 {#4785
    date: 2023-11-14 21:21:06.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
124 DENIED moderate
App\Entity\EntryComment {#4786
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4614
    +user: App\Entity\User {#4627 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: "ngl Im more interested in the dock and what protocols it uses. I’ve been missing latte dock since I migrated to wayland"
    +lang: "en"
    +isAdult: false
    +favouriteCount: 12
    +score: 0
    +lastActive: DateTime @1700252842 {#4608
      date: 2023-11-17 21:27:22.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4615 …}
    +nested: Doctrine\ORM\PersistentCollection {#4617 …}
    +votes: Doctrine\ORM\PersistentCollection {#4619 …}
    +reports: Doctrine\ORM\PersistentCollection {#4621 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4623 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4625 …}
    -id: 124817
    -bodyTs: "'dock':7,18 'im':2 'interest':4 'latt':17 'migrat':21 'miss':16 'ngl':1 'protocol':10 'sinc':19 'use':12 've':14 'wayland':23"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.dbzer0.com/comment/5094973"
    +editedAt: DateTimeImmutable @1700239722 {#4609
      date: 2023-11-17 17:48:42.0 +01:00
    }
    +createdAt: DateTimeImmutable @1699992719 {#4610
      date: 2023-11-14 21:11:59.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4614}
  +body: "The dock is rendered directly by the compositor in one of the examples; it’s not an external application as it ideally should be. It doesn’t rely on any intricate protocols or systemd services to monitor the states of apps. I added it solely for demonstration purposes."
  +lang: "en"
  +isAdult: false
  +favouriteCount: 12
  +score: 0
  +lastActive: DateTime @1699993266 {#4784
    date: 2023-11-14 21:21:06.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@drwankingstein@lemmy.dbzer0.com"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4787 …}
  +nested: Doctrine\ORM\PersistentCollection {#4789 …}
  +votes: Doctrine\ORM\PersistentCollection {#4791 …}
  +reports: Doctrine\ORM\PersistentCollection {#4793 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4795 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4797 …}
  -id: 124847
  -bodyTs: "'ad':43 'app':41 'applic':19 'compositor':8 'demonstr':47 'direct':5 'dock':2 'doesn':26 'exampl':13 'extern':18 'ideal':22 'intric':31 'monitor':37 'one':10 'protocol':32 'purpos':48 'reli':28 'render':4 'servic':35 'sole':45 'state':39 'systemd':34"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5312945"
  +editedAt: null
  +createdAt: DateTimeImmutable @1699993266 {#4785
    date: 2023-11-14 21:21:06.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
125 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
126 DENIED moderate
App\Entity\EntryComment {#4955
  +user: App\Entity\User {#4627 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4786
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#4614
      +user: App\Entity\User {#4627 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: null
      +root: null
      +body: "ngl Im more interested in the dock and what protocols it uses. I’ve been missing latte dock since I migrated to wayland"
      +lang: "en"
      +isAdult: false
      +favouriteCount: 12
      +score: 0
      +lastActive: DateTime @1700252842 {#4608
        date: 2023-11-17 21:27:22.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4615 …}
      +nested: Doctrine\ORM\PersistentCollection {#4617 …}
      +votes: Doctrine\ORM\PersistentCollection {#4619 …}
      +reports: Doctrine\ORM\PersistentCollection {#4621 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4623 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4625 …}
      -id: 124817
      -bodyTs: "'dock':7,18 'im':2 'interest':4 'latt':17 'migrat':21 'miss':16 'ngl':1 'protocol':10 'sinc':19 'use':12 've':14 'wayland':23"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemmy.dbzer0.com/comment/5094973"
      +editedAt: DateTimeImmutable @1700239722 {#4609
        date: 2023-11-17 17:48:42.0 +01:00
      }
      +createdAt: DateTimeImmutable @1699992719 {#4610
        date: 2023-11-14 21:11:59.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4614}
    +body: "The dock is rendered directly by the compositor in one of the examples; it’s not an external application as it ideally should be. It doesn’t rely on any intricate protocols or systemd services to monitor the states of apps. I added it solely for demonstration purposes."
    +lang: "en"
    +isAdult: false
    +favouriteCount: 12
    +score: 0
    +lastActive: DateTime @1699993266 {#4784
      date: 2023-11-14 21:21:06.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@drwankingstein@lemmy.dbzer0.com"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4787 …}
    +nested: Doctrine\ORM\PersistentCollection {#4789 …}
    +votes: Doctrine\ORM\PersistentCollection {#4791 …}
    +reports: Doctrine\ORM\PersistentCollection {#4793 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4795 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4797 …}
    -id: 124847
    -bodyTs: "'ad':43 'app':41 'applic':19 'compositor':8 'demonstr':47 'direct':5 'dock':2 'doesn':26 'exampl':13 'extern':18 'ideal':22 'intric':31 'monitor':37 'one':10 'protocol':32 'purpos':48 'reli':28 'render':4 'servic':35 'sole':45 'state':39 'systemd':34"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.world/comment/5312945"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699993266 {#4785
      date: 2023-11-14 21:21:06.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4614}
  +body: "Ah thats a shame, looks good however"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 2
  +score: 0
  +lastActive: DateTime @1700002042 {#4954
    date: 2023-11-14 23:47:22.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@drwankingstein@lemmy.dbzer0.com"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4962 …}
  +nested: Doctrine\ORM\PersistentCollection {#4965 …}
  +votes: Doctrine\ORM\PersistentCollection {#4967 …}
  +reports: Doctrine\ORM\PersistentCollection {#4969 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4971 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4973 …}
  -id: 125386
  -bodyTs: "'ah':1 'good':6 'howev':7 'look':5 'shame':4 'that':2"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.dbzer0.com/comment/5099004"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700002042 {#4957
    date: 2023-11-14 23:47:22.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
127 DENIED edit
App\Entity\EntryComment {#4955
  +user: App\Entity\User {#4627 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4786
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#4614
      +user: App\Entity\User {#4627 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: null
      +root: null
      +body: "ngl Im more interested in the dock and what protocols it uses. I’ve been missing latte dock since I migrated to wayland"
      +lang: "en"
      +isAdult: false
      +favouriteCount: 12
      +score: 0
      +lastActive: DateTime @1700252842 {#4608
        date: 2023-11-17 21:27:22.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4615 …}
      +nested: Doctrine\ORM\PersistentCollection {#4617 …}
      +votes: Doctrine\ORM\PersistentCollection {#4619 …}
      +reports: Doctrine\ORM\PersistentCollection {#4621 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4623 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4625 …}
      -id: 124817
      -bodyTs: "'dock':7,18 'im':2 'interest':4 'latt':17 'migrat':21 'miss':16 'ngl':1 'protocol':10 'sinc':19 'use':12 've':14 'wayland':23"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemmy.dbzer0.com/comment/5094973"
      +editedAt: DateTimeImmutable @1700239722 {#4609
        date: 2023-11-17 17:48:42.0 +01:00
      }
      +createdAt: DateTimeImmutable @1699992719 {#4610
        date: 2023-11-14 21:11:59.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4614}
    +body: "The dock is rendered directly by the compositor in one of the examples; it’s not an external application as it ideally should be. It doesn’t rely on any intricate protocols or systemd services to monitor the states of apps. I added it solely for demonstration purposes."
    +lang: "en"
    +isAdult: false
    +favouriteCount: 12
    +score: 0
    +lastActive: DateTime @1699993266 {#4784
      date: 2023-11-14 21:21:06.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@drwankingstein@lemmy.dbzer0.com"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4787 …}
    +nested: Doctrine\ORM\PersistentCollection {#4789 …}
    +votes: Doctrine\ORM\PersistentCollection {#4791 …}
    +reports: Doctrine\ORM\PersistentCollection {#4793 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4795 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4797 …}
    -id: 124847
    -bodyTs: "'ad':43 'app':41 'applic':19 'compositor':8 'demonstr':47 'direct':5 'dock':2 'doesn':26 'exampl':13 'extern':18 'ideal':22 'intric':31 'monitor':37 'one':10 'protocol':32 'purpos':48 'reli':28 'render':4 'servic':35 'sole':45 'state':39 'systemd':34"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.world/comment/5312945"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699993266 {#4785
      date: 2023-11-14 21:21:06.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4614}
  +body: "Ah thats a shame, looks good however"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 2
  +score: 0
  +lastActive: DateTime @1700002042 {#4954
    date: 2023-11-14 23:47:22.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@drwankingstein@lemmy.dbzer0.com"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4962 …}
  +nested: Doctrine\ORM\PersistentCollection {#4965 …}
  +votes: Doctrine\ORM\PersistentCollection {#4967 …}
  +reports: Doctrine\ORM\PersistentCollection {#4969 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4971 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4973 …}
  -id: 125386
  -bodyTs: "'ah':1 'good':6 'howev':7 'look':5 'shame':4 'that':2"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.dbzer0.com/comment/5099004"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700002042 {#4957
    date: 2023-11-14 23:47:22.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
128 DENIED moderate
App\Entity\EntryComment {#4955
  +user: App\Entity\User {#4627 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4786
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: App\Entity\EntryComment {#4614
      +user: App\Entity\User {#4627 …}
      +entry: App\Entity\Entry {#2419}
      +magazine: App\Entity\Magazine {#265}
      +image: null
      +parent: null
      +root: null
      +body: "ngl Im more interested in the dock and what protocols it uses. I’ve been missing latte dock since I migrated to wayland"
      +lang: "en"
      +isAdult: false
      +favouriteCount: 12
      +score: 0
      +lastActive: DateTime @1700252842 {#4608
        date: 2023-11-17 21:27:22.0 +01:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@ehopperdietzel@lemmy.world"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4615 …}
      +nested: Doctrine\ORM\PersistentCollection {#4617 …}
      +votes: Doctrine\ORM\PersistentCollection {#4619 …}
      +reports: Doctrine\ORM\PersistentCollection {#4621 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4623 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4625 …}
      -id: 124817
      -bodyTs: "'dock':7,18 'im':2 'interest':4 'latt':17 'migrat':21 'miss':16 'ngl':1 'protocol':10 'sinc':19 'use':12 've':14 'wayland':23"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemmy.dbzer0.com/comment/5094973"
      +editedAt: DateTimeImmutable @1700239722 {#4609
        date: 2023-11-17 17:48:42.0 +01:00
      }
      +createdAt: DateTimeImmutable @1699992719 {#4610
        date: 2023-11-14 21:11:59.0 +01:00
      }
    }
    +root: App\Entity\EntryComment {#4614}
    +body: "The dock is rendered directly by the compositor in one of the examples; it’s not an external application as it ideally should be. It doesn’t rely on any intricate protocols or systemd services to monitor the states of apps. I added it solely for demonstration purposes."
    +lang: "en"
    +isAdult: false
    +favouriteCount: 12
    +score: 0
    +lastActive: DateTime @1699993266 {#4784
      date: 2023-11-14 21:21:06.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
      "@drwankingstein@lemmy.dbzer0.com"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4787 …}
    +nested: Doctrine\ORM\PersistentCollection {#4789 …}
    +votes: Doctrine\ORM\PersistentCollection {#4791 …}
    +reports: Doctrine\ORM\PersistentCollection {#4793 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4795 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4797 …}
    -id: 124847
    -bodyTs: "'ad':43 'app':41 'applic':19 'compositor':8 'demonstr':47 'direct':5 'dock':2 'doesn':26 'exampl':13 'extern':18 'ideal':22 'intric':31 'monitor':37 'one':10 'protocol':32 'purpos':48 'reli':28 'render':4 'servic':35 'sole':45 'state':39 'systemd':34"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.world/comment/5312945"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699993266 {#4785
      date: 2023-11-14 21:21:06.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4614}
  +body: "Ah thats a shame, looks good however"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 2
  +score: 0
  +lastActive: DateTime @1700002042 {#4954
    date: 2023-11-14 23:47:22.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@drwankingstein@lemmy.dbzer0.com"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4962 …}
  +nested: Doctrine\ORM\PersistentCollection {#4965 …}
  +votes: Doctrine\ORM\PersistentCollection {#4967 …}
  +reports: Doctrine\ORM\PersistentCollection {#4969 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4971 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4973 …}
  -id: 125386
  -bodyTs: "'ah':1 'good':6 'howev':7 'look':5 'shame':4 'that':2"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.dbzer0.com/comment/5099004"
  +editedAt: null
  +createdAt: DateTimeImmutable @1700002042 {#4957
    date: 2023-11-14 23:47:22.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
129 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
130 DENIED moderate
App\Entity\EntryComment {#4801
  +user: App\Entity\User {#4551 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4614
    +user: App\Entity\User {#4627 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: "ngl Im more interested in the dock and what protocols it uses. I’ve been missing latte dock since I migrated to wayland"
    +lang: "en"
    +isAdult: false
    +favouriteCount: 12
    +score: 0
    +lastActive: DateTime @1700252842 {#4608
      date: 2023-11-17 21:27:22.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4615 …}
    +nested: Doctrine\ORM\PersistentCollection {#4617 …}
    +votes: Doctrine\ORM\PersistentCollection {#4619 …}
    +reports: Doctrine\ORM\PersistentCollection {#4621 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4623 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4625 …}
    -id: 124817
    -bodyTs: "'dock':7,18 'im':2 'interest':4 'latt':17 'migrat':21 'miss':16 'ngl':1 'protocol':10 'sinc':19 'use':12 've':14 'wayland':23"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.dbzer0.com/comment/5094973"
    +editedAt: DateTimeImmutable @1700239722 {#4609
      date: 2023-11-17 17:48:42.0 +01:00
    }
    +createdAt: DateTimeImmutable @1699992719 {#4610
      date: 2023-11-14 21:11:59.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4614}
  +body: "I just use plasma panels these days"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 2
  +score: 0
  +lastActive: DateTime @1699993799 {#4799
    date: 2023-11-14 21:29:59.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@drwankingstein@lemmy.dbzer0.com"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4802 …}
  +nested: Doctrine\ORM\PersistentCollection {#4804 …}
  +votes: Doctrine\ORM\PersistentCollection {#4806 …}
  +reports: Doctrine\ORM\PersistentCollection {#4808 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4810 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4812 …}
  -id: 124875
  -bodyTs: "'day':7 'panel':5 'plasma':4 'use':3"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.ml/comment/5800061"
  +editedAt: null
  +createdAt: DateTimeImmutable @1699993799 {#4800
    date: 2023-11-14 21:29:59.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
131 DENIED edit
App\Entity\EntryComment {#4801
  +user: App\Entity\User {#4551 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4614
    +user: App\Entity\User {#4627 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: "ngl Im more interested in the dock and what protocols it uses. I’ve been missing latte dock since I migrated to wayland"
    +lang: "en"
    +isAdult: false
    +favouriteCount: 12
    +score: 0
    +lastActive: DateTime @1700252842 {#4608
      date: 2023-11-17 21:27:22.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4615 …}
    +nested: Doctrine\ORM\PersistentCollection {#4617 …}
    +votes: Doctrine\ORM\PersistentCollection {#4619 …}
    +reports: Doctrine\ORM\PersistentCollection {#4621 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4623 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4625 …}
    -id: 124817
    -bodyTs: "'dock':7,18 'im':2 'interest':4 'latt':17 'migrat':21 'miss':16 'ngl':1 'protocol':10 'sinc':19 'use':12 've':14 'wayland':23"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.dbzer0.com/comment/5094973"
    +editedAt: DateTimeImmutable @1700239722 {#4609
      date: 2023-11-17 17:48:42.0 +01:00
    }
    +createdAt: DateTimeImmutable @1699992719 {#4610
      date: 2023-11-14 21:11:59.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4614}
  +body: "I just use plasma panels these days"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 2
  +score: 0
  +lastActive: DateTime @1699993799 {#4799
    date: 2023-11-14 21:29:59.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@drwankingstein@lemmy.dbzer0.com"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4802 …}
  +nested: Doctrine\ORM\PersistentCollection {#4804 …}
  +votes: Doctrine\ORM\PersistentCollection {#4806 …}
  +reports: Doctrine\ORM\PersistentCollection {#4808 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4810 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4812 …}
  -id: 124875
  -bodyTs: "'day':7 'panel':5 'plasma':4 'use':3"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.ml/comment/5800061"
  +editedAt: null
  +createdAt: DateTimeImmutable @1699993799 {#4800
    date: 2023-11-14 21:29:59.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
132 DENIED moderate
App\Entity\EntryComment {#4801
  +user: App\Entity\User {#4551 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4614
    +user: App\Entity\User {#4627 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: "ngl Im more interested in the dock and what protocols it uses. I’ve been missing latte dock since I migrated to wayland"
    +lang: "en"
    +isAdult: false
    +favouriteCount: 12
    +score: 0
    +lastActive: DateTime @1700252842 {#4608
      date: 2023-11-17 21:27:22.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4615 …}
    +nested: Doctrine\ORM\PersistentCollection {#4617 …}
    +votes: Doctrine\ORM\PersistentCollection {#4619 …}
    +reports: Doctrine\ORM\PersistentCollection {#4621 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4623 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4625 …}
    -id: 124817
    -bodyTs: "'dock':7,18 'im':2 'interest':4 'latt':17 'migrat':21 'miss':16 'ngl':1 'protocol':10 'sinc':19 'use':12 've':14 'wayland':23"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemmy.dbzer0.com/comment/5094973"
    +editedAt: DateTimeImmutable @1700239722 {#4609
      date: 2023-11-17 17:48:42.0 +01:00
    }
    +createdAt: DateTimeImmutable @1699992719 {#4610
      date: 2023-11-14 21:11:59.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4614}
  +body: "I just use plasma panels these days"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 2
  +score: 0
  +lastActive: DateTime @1699993799 {#4799
    date: 2023-11-14 21:29:59.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@drwankingstein@lemmy.dbzer0.com"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4802 …}
  +nested: Doctrine\ORM\PersistentCollection {#4804 …}
  +votes: Doctrine\ORM\PersistentCollection {#4806 …}
  +reports: Doctrine\ORM\PersistentCollection {#4808 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4810 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4812 …}
  -id: 124875
  -bodyTs: "'day':7 'panel':5 'plasma':4 'use':3"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.ml/comment/5800061"
  +editedAt: null
  +createdAt: DateTimeImmutable @1699993799 {#4800
    date: 2023-11-14 21:29:59.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
133 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
134 DENIED moderate
App\Entity\EntryComment {#4687
  +user: App\Entity\User {#4700 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: null
  +root: null
  +body: "Is that desktop environment an apple UI clone?"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 5
  +score: 0
  +lastActive: DateTime @1700238774 {#4682
    date: 2023-11-17 17:32:54.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4688 …}
  +nested: Doctrine\ORM\PersistentCollection {#4690 …}
  +votes: Doctrine\ORM\PersistentCollection {#4692 …}
  +reports: Doctrine\ORM\PersistentCollection {#4694 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4696 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4698 …}
  -id: 124634
  -bodyTs: "'appl':6 'clone':8 'desktop':3 'environ':4 'ui':7"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemm.ee/comment/6127674"
  +editedAt: null
  +createdAt: DateTimeImmutable @1699989824 {#4683
    date: 2023-11-14 20:23:44.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
135 DENIED edit
App\Entity\EntryComment {#4687
  +user: App\Entity\User {#4700 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: null
  +root: null
  +body: "Is that desktop environment an apple UI clone?"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 5
  +score: 0
  +lastActive: DateTime @1700238774 {#4682
    date: 2023-11-17 17:32:54.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4688 …}
  +nested: Doctrine\ORM\PersistentCollection {#4690 …}
  +votes: Doctrine\ORM\PersistentCollection {#4692 …}
  +reports: Doctrine\ORM\PersistentCollection {#4694 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4696 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4698 …}
  -id: 124634
  -bodyTs: "'appl':6 'clone':8 'desktop':3 'environ':4 'ui':7"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemm.ee/comment/6127674"
  +editedAt: null
  +createdAt: DateTimeImmutable @1699989824 {#4683
    date: 2023-11-14 20:23:44.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
136 DENIED moderate
App\Entity\EntryComment {#4687
  +user: App\Entity\User {#4700 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: null
  +root: null
  +body: "Is that desktop environment an apple UI clone?"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 5
  +score: 0
  +lastActive: DateTime @1700238774 {#4682
    date: 2023-11-17 17:32:54.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4688 …}
  +nested: Doctrine\ORM\PersistentCollection {#4690 …}
  +votes: Doctrine\ORM\PersistentCollection {#4692 …}
  +reports: Doctrine\ORM\PersistentCollection {#4694 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4696 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4698 …}
  -id: 124634
  -bodyTs: "'appl':6 'clone':8 'desktop':3 'environ':4 'ui':7"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemm.ee/comment/6127674"
  +editedAt: null
  +createdAt: DateTimeImmutable @1699989824 {#4683
    date: 2023-11-14 20:23:44.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
137 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
138 DENIED moderate
App\Entity\EntryComment {#4770
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4687
    +user: App\Entity\User {#4700 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: "Is that desktop environment an apple UI clone?"
    +lang: "en"
    +isAdult: false
    +favouriteCount: 5
    +score: 0
    +lastActive: DateTime @1700238774 {#4682
      date: 2023-11-17 17:32:54.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4688 …}
    +nested: Doctrine\ORM\PersistentCollection {#4690 …}
    +votes: Doctrine\ORM\PersistentCollection {#4692 …}
    +reports: Doctrine\ORM\PersistentCollection {#4694 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4696 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4698 …}
    -id: 124634
    -bodyTs: "'appl':6 'clone':8 'desktop':3 'environ':4 'ui':7"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemm.ee/comment/6127674"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989824 {#4683
      date: 2023-11-14 20:23:44.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4687}
  +body: "Yes (kinda), that is a screenshot of one of the example compositors I included called “louvre-views” which implements server side decorations for apps that support the XDG Decoration protocol."
  +lang: "en"
  +isAdult: false
  +favouriteCount: 16
  +score: 0
  +lastActive: DateTime @1699992121 {#4763
    date: 2023-11-14 21:02:01.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@JackGreenEarth@lemm.ee"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4771 …}
  +nested: Doctrine\ORM\PersistentCollection {#4773 …}
  +votes: Doctrine\ORM\PersistentCollection {#4775 …}
  +reports: Doctrine\ORM\PersistentCollection {#4778 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4780 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4782 …}
  -id: 124774
  -bodyTs: "'app':25 'call':15 'compositor':12 'decor':23,30 'exampl':11 'implement':20 'includ':14 'kinda':2 'louvr':17 'louvre-view':16 'one':8 'protocol':31 'screenshot':6 'server':21 'side':22 'support':27 'view':18 'xdg':29 'yes':1"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5312576"
  +editedAt: DateTimeImmutable @1700239295 {#4766
    date: 2023-11-17 17:41:35.0 +01:00
  }
  +createdAt: DateTimeImmutable @1699992121 {#4764
    date: 2023-11-14 21:02:01.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
139 DENIED edit
App\Entity\EntryComment {#4770
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4687
    +user: App\Entity\User {#4700 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: "Is that desktop environment an apple UI clone?"
    +lang: "en"
    +isAdult: false
    +favouriteCount: 5
    +score: 0
    +lastActive: DateTime @1700238774 {#4682
      date: 2023-11-17 17:32:54.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4688 …}
    +nested: Doctrine\ORM\PersistentCollection {#4690 …}
    +votes: Doctrine\ORM\PersistentCollection {#4692 …}
    +reports: Doctrine\ORM\PersistentCollection {#4694 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4696 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4698 …}
    -id: 124634
    -bodyTs: "'appl':6 'clone':8 'desktop':3 'environ':4 'ui':7"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemm.ee/comment/6127674"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989824 {#4683
      date: 2023-11-14 20:23:44.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4687}
  +body: "Yes (kinda), that is a screenshot of one of the example compositors I included called “louvre-views” which implements server side decorations for apps that support the XDG Decoration protocol."
  +lang: "en"
  +isAdult: false
  +favouriteCount: 16
  +score: 0
  +lastActive: DateTime @1699992121 {#4763
    date: 2023-11-14 21:02:01.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@JackGreenEarth@lemm.ee"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4771 …}
  +nested: Doctrine\ORM\PersistentCollection {#4773 …}
  +votes: Doctrine\ORM\PersistentCollection {#4775 …}
  +reports: Doctrine\ORM\PersistentCollection {#4778 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4780 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4782 …}
  -id: 124774
  -bodyTs: "'app':25 'call':15 'compositor':12 'decor':23,30 'exampl':11 'implement':20 'includ':14 'kinda':2 'louvr':17 'louvre-view':16 'one':8 'protocol':31 'screenshot':6 'server':21 'side':22 'support':27 'view':18 'xdg':29 'yes':1"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5312576"
  +editedAt: DateTimeImmutable @1700239295 {#4766
    date: 2023-11-17 17:41:35.0 +01:00
  }
  +createdAt: DateTimeImmutable @1699992121 {#4764
    date: 2023-11-14 21:02:01.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
140 DENIED moderate
App\Entity\EntryComment {#4770
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2419
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#265
      +icon: Proxies\__CG__\App\Entity\Image {#246 …}
      +name: "linux@lemmy.ml"
      +title: "linux"
      +description: """
        From Wikipedia, the free encyclopedia\n
        \n
        Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
        \n
        Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
        \n
        ### Rules\n
        \n
        - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
        - No misinformation\n
        - No NSFW content\n
        - No hate speech, bigotry, etc\n
        \n
        ### Related Communities\n
        \n
        - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
        - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
        - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
        - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
        \n
        Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 1406
      +entryCommentCount: 28632
      +postCount: 6
      +postCommentCount: 214
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729583542 {#275
        date: 2024-10-22 09:52:22.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#237 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
      +entries: Doctrine\ORM\PersistentCollection {#180 …}
      +posts: Doctrine\ORM\PersistentCollection {#138 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
      +bans: Doctrine\ORM\PersistentCollection {#117 …}
      +reports: Doctrine\ORM\PersistentCollection {#103 …}
      +badges: Doctrine\ORM\PersistentCollection {#81 …}
      +logs: Doctrine\ORM\PersistentCollection {#71 …}
      +awards: Doctrine\ORM\PersistentCollection {#1346 …}
      +categories: Doctrine\ORM\PersistentCollection {#1823 …}
      -id: 73
      +apId: "linux@lemmy.ml"
      +apProfileId: "https://lemmy.ml/c/linux"
      +apPublicUrl: "https://lemmy.ml/c/linux"
      +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
      +apInboxUrl: "https://lemmy.ml/inbox"
      +apDomain: "lemmy.ml"
      +apPreferredUsername: "linux"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729583596 {#269
        date: 2024-10-22 09:53:16.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1698929468 {#271
        date: 2023-11-02 13:51:08.0 +01:00
      }
    }
    +image: Proxies\__CG__\App\Entity\Image {#1943 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1912 …}
    +slug: "Louvre-C-library-for-building-Wayland-compositors"
    +title: "Louvre: C++ library for building Wayland compositors."
    +url: "https://lemmy.world/pictrs/image/712727df-59a9-4c0c-a7cf-e55bccdab252.png"
    +body: """
      Hello, yesterday I officially released Louvre v1.0.0, a C++ library designed for building Wayland compositors with a primary focus on ease of development. It provides a default method for handling protocols, input events, and rendering, which you can selectively and progressively override as required, allowing you to see a functional compositor from day 1.\n
      \n
      It supports multi-GPU setups, multi-session (TTY switching), and offers various rendering options, including a scene and view system that automatically repaints only the damaged (changing) regions during a frame. Because it uses multiple threads, it can maintain a high FPS rate with v-sync enabled when rendering complex scenarios. In contrast, single-threaded compositors often experience a rapid drop in FPS, for example, from 60 to 30 fps, due to “dead times” while waiting for a screen vblank, leading to the skipping of frames.\n
      \n
      The library is freely available, open source, thoroughly documented, includes examples, and features a detailed tutorial.\n
      \n
      You can find it here: [github.com/CuarzoSoftware/Louvre](https://github.com/CuarzoSoftware/Louvre)\n
      \n
      I hope it proves useful for you. If you decide to use it and encounter any doubts or wish to contribute to its development, please don’t hesitate to reach out.\n
      \n
      Greetings!
      """
    +type: "image"
    +lang: "en"
    +isOc: false
    +hasEmbed: true
    +commentCount: 34
    +favouriteCount: 219
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1700324159 {#2414
      date: 2023-11-18 17:15:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1866 …}
    +votes: Doctrine\ORM\PersistentCollection {#1966 …}
    +reports: Doctrine\ORM\PersistentCollection {#1946 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1368 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2426 …}
    +badges: Doctrine\ORM\PersistentCollection {#2439 …}
    +children: []
    -id: 13052
    -titleTs: "'build':5 'c':2 'compositor':7 'librari':3 'louvr':1 'wayland':6"
    -bodyTs: "'/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':168 '1':54 '30':127 '60':125 'allow':45 'automat':78 'avail':149 'build':13 'c':9 'chang':83 'complex':107 'compositor':15,51,114 'contrast':110 'contribut':189 'damag':82 'day':53 'dead':131 'decid':178 'default':27 'design':11 'detail':159 'develop':23,192 'document':153 'doubt':185 'drop':119 'due':129 'eas':21 'enabl':104 'encount':183 'event':33 'exampl':123,155 'experi':116 'featur':157 'find':163 'focus':19 'fps':98,121,128 'frame':87,144 'freeli':148 'function':50 'github.com':167 'github.com/cuarzosoftware/louvre](https://github.com/cuarzosoftware/louvre)':166 'gpu':59 'greet':200 'handl':30 'hello':1 'hesit':196 'high':97 'hope':170 'includ':71,154 'input':32 'lead':139 'librari':10,146 'louvr':6 'maintain':95 'method':28 'multi':58,62 'multi-gpu':57 'multi-sess':61 'multipl':91 'offer':67 'offici':4 'often':115 'open':150 'option':70 'overrid':42 'pleas':193 'primari':18 'progress':41 'protocol':31 'prove':172 'provid':25 'rapid':118 'rate':99 'reach':198 'region':84 'releas':5 'render':35,69,106 'repaint':79 'requir':44 'scenario':108 'scene':73 'screen':137 'see':48 'select':39 'session':63 'setup':60 'singl':112 'single-thread':111 'skip':142 'sourc':151 'support':56 'switch':65 'sync':103 'system':76 'thorough':152 'thread':92,113 'time':132 'tti':64 'tutori':160 'use':90,173,180 'v':102 'v-sync':101 'v1.0.0':7 'various':68 'vblank':138 'view':75 'wait':134 'wayland':14 'wish':187 'yesterday':2"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1700075572
    +visibility: "visible             "
    +apId: "https://lemmy.world/post/8258740"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989172 {#1793
      date: 2023-11-14 20:12:52.0 +01:00
    }
  }
  +magazine: App\Entity\Magazine {#265}
  +image: null
  +parent: App\Entity\EntryComment {#4687
    +user: App\Entity\User {#4700 …}
    +entry: App\Entity\Entry {#2419}
    +magazine: App\Entity\Magazine {#265}
    +image: null
    +parent: null
    +root: null
    +body: "Is that desktop environment an apple UI clone?"
    +lang: "en"
    +isAdult: false
    +favouriteCount: 5
    +score: 0
    +lastActive: DateTime @1700238774 {#4682
      date: 2023-11-17 17:32:54.0 +01:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@ehopperdietzel@lemmy.world"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4688 …}
    +nested: Doctrine\ORM\PersistentCollection {#4690 …}
    +votes: Doctrine\ORM\PersistentCollection {#4692 …}
    +reports: Doctrine\ORM\PersistentCollection {#4694 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4696 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4698 …}
    -id: 124634
    -bodyTs: "'appl':6 'clone':8 'desktop':3 'environ':4 'ui':7"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://lemm.ee/comment/6127674"
    +editedAt: null
    +createdAt: DateTimeImmutable @1699989824 {#4683
      date: 2023-11-14 20:23:44.0 +01:00
    }
  }
  +root: App\Entity\EntryComment {#4687}
  +body: "Yes (kinda), that is a screenshot of one of the example compositors I included called “louvre-views” which implements server side decorations for apps that support the XDG Decoration protocol."
  +lang: "en"
  +isAdult: false
  +favouriteCount: 16
  +score: 0
  +lastActive: DateTime @1699992121 {#4763
    date: 2023-11-14 21:02:01.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@ehopperdietzel@lemmy.world"
    "@JackGreenEarth@lemm.ee"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4771 …}
  +nested: Doctrine\ORM\PersistentCollection {#4773 …}
  +votes: Doctrine\ORM\PersistentCollection {#4775 …}
  +reports: Doctrine\ORM\PersistentCollection {#4778 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4780 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4782 …}
  -id: 124774
  -bodyTs: "'app':25 'call':15 'compositor':12 'decor':23,30 'exampl':11 'implement':20 'includ':14 'kinda':2 'louvr':17 'louvre-view':16 'one':8 'protocol':31 'screenshot':6 'server':21 'side':22 'support':27 'view':18 'xdg':29 'yes':1"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/5312576"
  +editedAt: DateTimeImmutable @1700239295 {#4766
    date: 2023-11-17 17:41:35.0 +01:00
  }
  +createdAt: DateTimeImmutable @1699992121 {#4764
    date: 2023-11-14 21:02:01.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
141 DENIED edit
App\Entity\Magazine {#265
  +icon: Proxies\__CG__\App\Entity\Image {#246 …}
  +name: "linux@lemmy.ml"
  +title: "linux"
  +description: """
    From Wikipedia, the free encyclopedia\n
    \n
    Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).\n
    \n
    Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.\n
    \n
    ### Rules\n
    \n
    - Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.\n
    - No misinformation\n
    - No NSFW content\n
    - No hate speech, bigotry, etc\n
    \n
    ### Related Communities\n
    \n
    - [!opensource@lemmy.ml](https://lemmy.ml/c/opensource)\n
    - [!libre_culture@lemmy.ml](https://lemmy.ml/c/libre_culture)\n
    - [!technology@lemmy.ml](https://lemmy.ml/c/technology)\n
    - [!libre_hardware@lemmy.ml](https://lemmy.ml/c/libre_hardware)\n
    \n
    Community icon by [Alpár-Etele Méder](https://www.iconfinder.com/pocike), licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
    """
  +rules: null
  +subscriptionsCount: 1
  +entryCount: 1406
  +entryCommentCount: 28632
  +postCount: 6
  +postCommentCount: 214
  +isAdult: false
  +customCss: null
  +lastActive: DateTime @1729583542 {#275
    date: 2024-10-22 09:52:22.0 +02:00
  }
  +markedForDeletionAt: null
  +tags: null
  +moderators: Doctrine\ORM\PersistentCollection {#237 …}
  +ownershipRequests: Doctrine\ORM\PersistentCollection {#233 …}
  +moderatorRequests: Doctrine\ORM\PersistentCollection {#222 …}
  +entries: Doctrine\ORM\PersistentCollection {#180 …}
  +posts: Doctrine\ORM\PersistentCollection {#138 …}
  +subscriptions: Doctrine\ORM\PersistentCollection {#200 …}
  +bans: Doctrine\ORM\PersistentCollection {#117 …}
  +reports: Doctrine\ORM\PersistentCollection {#103 …}
  +badges: Doctrine\ORM\PersistentCollection {#81 …}
  +logs: Doctrine\ORM\PersistentCollection {#71 …}
  +awards: Doctrine\ORM\PersistentCollection {#1346 …}
  +categories: Doctrine\ORM\PersistentCollection {#1823 …}
  -id: 73
  +apId: "linux@lemmy.ml"
  +apProfileId: "https://lemmy.ml/c/linux"
  +apPublicUrl: "https://lemmy.ml/c/linux"
  +apFollowersUrl: "https://lemmy.ml/c/linux/followers"
  +apInboxUrl: "https://lemmy.ml/inbox"
  +apDomain: "lemmy.ml"
  +apPreferredUsername: "linux"
  +apDiscoverable: true
  +apManuallyApprovesFollowers: null
  +privateKey: null
  +publicKey: null
  +apFetchedAt: DateTime @1729583596 {#269
    date: 2024-10-22 09:53:16.0 +02:00
  }
  +apDeletedAt: null
  +apTimeoutAt: null
  +visibility: "visible             "
  +createdAt: DateTimeImmutable @1698929468 {#271
    date: 2023-11-02 13:51:08.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS DENIED
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details