<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="115600" data-post-id="115600">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="axelson" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/axelson/120/26351_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  axelson
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Scenic Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="boydm" data-post="15" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/boydm/48/582_2.png" class="avatar"> boydm:</div>
<blockquote>
<p>Hey guys. Sorry I’m late to the thread. I have GOT to remember to check this site more often.</p>
</blockquote>
</aside>
<p>Not sure if you know this but for the benefit of anyone reading this in Discourse you can watch a tag and be notified of all new posts in that tag. So for example if you go to <a href="https://forum.elixirforum.com/tags/scenic" class="inline-onebox" rel="nofollow">Topics tagged scenic</a> and click on the circle in the upper right you can choose “watching first post” and be notified via email of all new posts with that tag (<a class="hashtag-cooked" href="/tag/scenic/783" data-type="tag" data-slug="scenic" data-id="783" data-style-type="icon" data-icon="tag" rel="nofollow"><span class="hashtag-icon-placeholder"><svg class="fa d-icon d-icon-square-full svg-icon svg-node"><use href="#square-full"></use></svg></span><span>scenic</span></a>) in this example.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="115600" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/how-about-crowdfunding-for-scenic-based-libraries-projects/19983/22">Post #21</a>
	                </div>
	            </div>
              <div id="likers-container-115600" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="115600"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #21"></div>
  </section>
</div>
    <div class="postbit" id="115613" data-post-id="115613">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="OvermindDL1" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/OvermindDL1/120/2677_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  OvermindDL1
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="Eiji" data-post="17" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<ul>
<li>I did not found any Erlang/Elixir code for tray icon support</li>
<li>I did not found any Erlang/Elixir code for OS notification support</li>
<li>Predefined components in all GUI libraries are not enough</li>
</ul>
</blockquote>
</aside>
<p>Sounds like you have a PR in mind to expose that functionality from wx itself.  ^.^<br>
Pretty easy to make new components in Wx as well, old style code but it works.</p>
<p>Features get added when someone needs them and thus adds them.  <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
<p>Honestly I’d just say it should all be based on Qt or so now, it’s OGL accelerated, fully themeable or can look like the OS, etc… etc…  Now if only it’s license wasn’t quite as horrible.  ^.^;</p>
<aside class="quote no-group" data-username="Eiji" data-post="21" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>I just want to read how other standards are configured and make existing (again <code>scenic</code> ) standard use them.</p>
</blockquote>
</aside>
<p>Except they are varied and most are incompatible in how they work as well.  Like take Qt, there is a GTK hoister that themes GTK apps to look QT’ish, but it’s not perfect.  The best thing to do is to use the native platform primitives for the given windowing system, which on, say, my system is Qt, on others is GTK, on Windows is whatever-new-flavor-of-the-week, and that is all way way too much work, and that would just be on ‘using’ them, however to be able to support their themes would be even more work as you are essentially rewriting their drawing commands for them all.  I tend to prefer Qt personally as it does the best among them all, even with its horrible license.  ^.^;</p>
<p>Regardless, the BEAM is not made for making desktop apps.  Sure you can shoehorn it in but it never works as well as an actual native app.  The reason scenic and such exist is for embedded systems that don’t have their own interfaces.  If it is a normal desktop, just write the GUI part in a normal language.</p>
<p>Based on what you are wanting I’d say you should make it and then publish the library on Hex.  <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="115613" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/how-about-crowdfunding-for-scenic-based-libraries-projects/19983/23">Post #22</a>
	                </div>
	            </div>
              <div id="likers-container-115613" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="115613"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #22"></div>
  </section>
</div>
    <div class="postbit" id="115615" data-post-id="115615">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Eiji" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Eiji/120/36743_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Eiji
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="OvermindDL1" data-post="23" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Sounds like you have a PR in mind to expose that functionality from wx itself.</p>
</blockquote>
</aside>
<p>I’m not sure about tray icon (look <code>Plasma</code> custom tray), but I would like to not add notifications support to <code>scenic</code>. I wanted say that I did not found anything working around it. <code>:wx</code> comparing to <code>:scenic</code> does not give me any benefit (of course <code>:wx</code> is bigger, have more components etc. but this would by simply changed in future).</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="23" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Features get added when someone needs them and thus adds them.</p>
</blockquote>
</aside>
<p>I would like to write some PRs, but I’m focused on one job, preparing for next one, on linkedin someone again asked me if I’m ok to work and finally I have almost finish one library from December, but can’t find a time to finish it properly. <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" loading="lazy" width="20" height="20"></p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="23" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Honestly I’d just say it should all be based on Qt or so now, it’s OGL accelerated, fully themeable or can look like the OS, etc… etc… Now if only it’s license wasn’t quite as horrible. ^.^;</p>
</blockquote>
</aside>
<p>Here goes again <code>:wx</code> vs <code>:scenic</code>, but with <code>Qt</code> in place of <code>:wx</code>. <code>scenic</code> is definitely my favorite now and I don’t think it would change easy. <code>Qt</code> have options for themes, but as said only for its own themes. Look that <code>oxygen</code> and <code>breeze</code> themes have their separate <code>GTK+</code> versions. At end I would like to see an settings page when you can browse for current theme, installed themes and themes from some repositories. With that end-user could decide which theme and behaviour he/she expects.</p>
<p>I have tried to find some custom window managers for <code>Windows</code>. I have hope that <code>KDE</code> team would make a stable <code>kwin</code> there, but it does not looks like a priority for them. I always want to write GUI apps for all OS and distributions and simply don’t care about <code>Windows</code>-like limitations. You probably feel same - at least I though that when you said about <code>&lt;alt&gt;</code> + mouse actions. Maybe for others it’s not important - for me it could be probably same, but once you tried it you would fall in love and you would like to have similar behaviour everywhere. Unfortunately some people are forced to use <code>Windows</code> which as said have too more limitations.</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="23" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Except they are varied and most are incompatible in how they work as well. Like take Qt, there is a GTK hoister that themes GTK apps to look QT’ish, but it’s not perfect. The best thing to do is to use the native platform primitives for the given windowing system, which on, say, my system is Qt, on others is GTK, on Windows is whatever-new-flavor-of-the-week, and that is all way way too much work, and that would just be on ‘using’ them, however to be able to support their themes would be even more work as you are essentially rewriting their drawing commands for them all. I tend to prefer Qt personally as it does the best among them all, even with its horrible license. ^.^;</p>
</blockquote>
</aside>
<p>I’m not sure if you got it. For simplest example just take a look at documentation:</p><aside class="onebox allowlistedgeneric" data-onebox-src="https://scenic.hexdocs.pm/Scenic.Component.Button.html">
  <header class="source">

      <a href="https://scenic.hexdocs.pm/Scenic.Component.Button.html" target="_blank" rel="noopener nofollow ugc">scenic.hexdocs.pm</a>
  </header>

  <article class="onebox-body">
    

<h3><a href="https://scenic.hexdocs.pm/Scenic.Component.Button.html" target="_blank" rel="noopener nofollow ugc">Scenic.Component.Button — Scenic v0.11.2</a></h3>



  </article>

  <div class="onebox-metadata">
    
    
  </div>

  <div style="clear: both"></div>
</aside>

<p>Except <code>:radius</code> in <code> Additional Styles</code> we have 3 other options: <code>active</code>, <code>background</code> and <code>text</code>. What I want is to just parse some theme files, read all available theme information and simply pass them to <code>scenic</code> in previous specified format. The biggest work (at least for me - i.e. anyone who did not worked with <code>OpenGL</code> previously) is to extend drawing code to support new options.</p>
<p>Of course some themes could be hard to scrape, but I did not said that we need all right now. I would like to firstly make research, create a final list of all possible theme options and add support for let’s say <code>GTK+</code> theme files. Later we can extend and extend it by for example add option to apply theme from remote repository. <code>Qt</code> for me is even more worse than <code>GTK+</code> - at least <code>GTK+</code> allow custom controls in titlebar.</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="23" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Regardless, the BEAM is not made for making desktop apps. Sure you can shoehorn it in but it never works as well as an actual native app. The reason scenic and such exist is for embedded systems that don’t have their own interfaces. If it is a normal desktop, just write the GUI part in a normal language.</p>
</blockquote>
</aside>
<p>Sorry, but I did not get. With few steps we could make <code>scenic</code> (or its fork if it’s really not priority for <a class="mention" href="/u/boydm" rel="nofollow">@boydm</a>) much more powerful than other GUI libraries. As said for example drawing in titlebar, drawing custom titlebar did not changed in years there - no matter how many developers asked for it. It have no sense for me to force using <code>GTK+</code> or <code>Qt</code> if at end I would need to write custom <code>OpenGL</code> code to draw my own components which <code>scenic</code> is doing already.</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="23" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Based on what you are wanting I’d say you should make it and then publish the library on Hex. <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
</blockquote>
</aside>
<p>Heh, I would really like to do so. As said I have not enough time, but I have more funds in last time than I originally planned. For now I could spend ~500 USD every month and maybe even more in future. Unfortunately I can’t fund everything myself, so it’s why I have created this topic.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="115615" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/how-about-crowdfunding-for-scenic-based-libraries-projects/19983/24">Post #23</a>
	                </div>
	            </div>
              <div id="likers-container-115615" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="115615"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #23"></div>
  </section>
</div>
    <div class="postbit" id="115616" data-post-id="115616">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="OvermindDL1" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/OvermindDL1/120/2677_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  OvermindDL1
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="Eiji" data-post="24" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Of course some themes could be hard to scrape, but I did not said that we need all right now. I would like to firstly make research, create a final list of all possible theme options and add support for let’s say <code>GTK+</code> theme files. Later we can extend and extend it by for example add option to apply theme from remote repository. <code>Qt</code> for me is even more worse than <code>GTK+</code> - at least <code>GTK+</code> allow custom controls in titlebar.</p>
</blockquote>
</aside>
<p>Qt allows those as well, a variety of KDE apps have those as such.</p>
<p>However, if all scenic exposes is radius/active/background/text then that is significantly not enough.  GTK’s is very… CSS’ish.  QT’s is an entire scripting language where you can quite literally do anything (it’s actually very succinct, I quite like this part of Qt).</p>
<aside class="quote no-group" data-username="Eiji" data-post="24" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>With few steps we could make <code>scenic</code> (or its fork if it’s really not priority for <a class="mention" href="/u/boydm" rel="nofollow">@boydm</a>) much more powerful than other GUI libraries.</p>
</blockquote>
</aside>
<p>With few steps?  GUI libraries are some of the largest libraries out though…  o.O<br>
Even just getting hidpi right is amazingly painful.  Then you have I18n, both in displaying of and accepting of.  If you put in detailed theming support that is more than just simple property updates then that’s a huge thing on its own.  Etc… etc…</p>
<p>I <em>very</em> much like native interfaces, that’s what I meant by the Alt+Click+Drag to move.  When a program breaks that assumption of my interface it is really really irritating.  And that is not just Alt+Click+Drag to move, I could bind it to Meta+MiddleClick+Drag to move, or Ctrl+RightClick to maximize or restore, etc…   It is impossible to emulate all the abilities that the windowing system allow for, this is why it is important to actually ‘use’ the windowing systems interfaces rather than just drawing everything in OGL.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="115616" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/how-about-crowdfunding-for-scenic-based-libraries-projects/19983/25">Post #24</a>
	                </div>
	            </div>
              <div id="likers-container-115616" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="115616"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #24"></div>
  </section>
</div>
    <div class="postbit" id="115621" data-post-id="115621">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Eiji" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Eiji/120/36743_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Eiji
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="OvermindDL1" data-post="25" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>With few steps? GUI libraries are some of the largest libraries out though… o.O</p>
</blockquote>
</aside>
<p>Yeah, they are really big, but it should not scary anyone.</p>
<p>Look:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">[font: :roboto, font_size: 24]
|&gt; Graph.build()
|&gt; Primitives.rect({@width, @height}, fill: {48, 48, 48})
</code></pre>
<p>The only thing here is that few values should be fetched from specified theme.</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="25" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>However, if all scenic exposes is radius/active/background/text then that is significantly not enough.</p>
</blockquote>
</aside>
<p>Yeah, that’s why I would like to change it.</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="25" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>GTK’s is very… CSS’ish.</p>
</blockquote>
</aside>
<p>Parsing <code>CSS</code> is not simplest thing, but it’s also not impossible for most developers. Especially when we have lots of parsing-related libraries to use and learn from.</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="25" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Even just getting hidpi right is amazingly painful.</p>
</blockquote>
</aside>
<p>Yeah, it is - I would like to have API for layout which would be rendered based on viewport resolution. Also painful does not mean it’s really hard. Basic things things like creating equivalent of <code>Bootstrap</code> (which is written in <code>CSS</code>) for <code>scenic</code> should not be really hard. Of course it requires lots of <code>OpenGL</code> code, so for me it would be really hard. However I believe that we could find some developers which are experienced in it.</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="25" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Then you have I18n, both in displaying of and accepting of.</p>
</blockquote>
</aside>
<p>Hmm, I though about it too. Should not be really hard. When writing details I would need to look again deep in <code>scenic</code> API and see how much things I would like to have in order to write <code>i18n</code> library for <code>scenic</code>-based apps.</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="25" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>If you put in detailed theming support that is more than just simple property updates then that’s a huge thing on its own.</p>
</blockquote>
</aside>
<p>I just want to fetch some properties from specified theme and update style properties based on them. Assuming that we will have code to fetch all information then the biggest work is … again <code>OpenGL</code>. Basically if there would be somebody which feels in <code>OpenGL</code> as well as I in <code>Elixir</code> then it should be pretty easy.</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="25" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>I <em>very</em> much like native interfaces, that’s what I meant by the Alt+Click+Drag to move. When a program breaks that assumption of my interface it is really really irritating. And that is not just Alt+Click+Drag to move, I could bind it to Meta+MiddleClick+Drag to move, or Ctrl+RightClick to maximize or restore, etc… It is impossible to emulate all the abilities that the windowing system allow for, this is why it is important to actually ‘use’ the windowing systems interfaces rather than just drawing everything in OGL.</p>
</blockquote>
</aside>
<p>I would like to give a try creating frameless, fullscreen and transparent window which could simulate window manager behaviours. However I was not sure about it and it’s why I think that’s biggest <img src="https://forum.elixirforum.com/uploads/default/original/2X/e/ec97a4d20dca83c1d59b0839e4f159c141fa11df.gif?v=15" title=":icon_question:" class="emoji emoji-custom" alt=":icon_question:" loading="lazy" width="20" height="20"> for what I’m planning.</p>
<p>In short there are 4 biggest parts of my plans:</p>
<ol>
<li>
<p>Scraping data - depends on theme files some are even really easy.<br>
Again we do not need to have support for all exactly now. Harder themes could be delayed for later.</p>
</li>
<li>
<p><code>OpenGL</code> part - it should not be a problem for someone experienced in this topic<br>
Also again I did not had a chance to do anything bigger in <code>OpenGL</code>, so for me it looks hard.</p>
</li>
<li>
<p>Reproduce window manager behaviours<br>
This could be even skipped on compile time for <code>nerves</code> devices.</p>
</li>
<li>
<p>Introduce other API - not strictly related to <code>scenic</code> like system notifications, system sounds etc.</p>
</li>
</ol>
<p>For me biggest priority are in order:</p>
<ol>
<li>
<p>Research and <code>OpenGL</code> work based on results<br>
In order to have everything prepared even if there is no scrapers for any theme files.</p>
</li>
<li>
<p>Make <code>scenic</code> (or its fork) work properly from <code>CLI</code> for end-user (instead of distillery releases).</p>
</li>
<li>
<p>Add support for OS notifications, simple (icon + menu) tray icon etc.<br>
Later maybe even <code>Plasma</code> 5 custom tray support.</p>
</li>
<li>
<p>Add more components</p>
</li>
<li>
<p>Add i18n support</p>
</li>
<li>
<p>Add <code>scenic</code> libraries for themes and related</p>
</li>
<li>
<p>Add not strictly related helpful libraries for GUI apps</p>
</li>
</ol>
<p><strong>Note</strong>:<br>
For sure I don’t said that anything from my plans is “5 min” work. I just want to say that’s only a matter of time and funds to implement such things.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="115621" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/how-about-crowdfunding-for-scenic-based-libraries-projects/19983/26">Post #25</a>
	                </div>
	            </div>
              <div id="likers-container-115621" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="115621"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #25"></div>
  </section>
</div>
    <div class="postbit" id="115629" data-post-id="115629">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="OvermindDL1" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/OvermindDL1/120/2677_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  OvermindDL1
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="Eiji" data-post="26" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Parsing <code>CSS</code> is not simplest thing, but it’s also not impossible for most developers. Especially when we have lots of parsing-related libraries to use and learn from.</p>
</blockquote>
</aside>
<p>It’s still not CSS however.</p>
<aside class="quote no-group" data-username="Eiji" data-post="26" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Yeah, it is - I would like to have API for layout which would be rendered based on viewport resolution.</p>
</blockquote>
</aside>
<p>And how do you determine that resolution?  GTK doesn’t get it right at all, hence why it requires environment variable workarounds and so forth.  Qt is one of the only things I’ve ever seen it get mostly right on linux and that’s only on wayland.  X just doesn’t have the capabilities to let you know that information reliably, it wasn’t even a concept when it was created.  Mac’s get it right 99% of the time, Windows fails on mismatched monitor DPI’s in most cases among others…  It’s a world of pain if you want multiplatform hidpi and you aren’t using Qt.</p>
<aside class="quote no-group" data-username="Eiji" data-post="26" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Hmm, I though about it too. Should not be really hard. When writing details I would need to look again deep in <code>scenic</code> API and see how much things I would like to have in order to write <code>i18n</code> library for <code>scenic</code> -based apps.</p>
</blockquote>
</aside>
<p>Heh, i18n input is significantly harder than you’d expect…  ^.^;<br>
Displaying it isn’t bad, it’s the input that is a horror.</p>
<aside class="quote no-group" data-username="Eiji" data-post="26" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>I just want to fetch some properties from specified theme and update style properties based on them. Assuming that we will have code to fetch all information then the biggest work is … again <code>OpenGL</code> . Basically if there would be somebody which feels in <code>OpenGL</code> as well as I in <code>Elixir</code> then it should be pretty easy.</p>
</blockquote>
</aside>
<p>And if you are wanting to get that information from, say, GTK or QT or Windows themes then you have a dozen parsers there with a few interpreters and rewriting the rendering of each essentially from scratch.  If you want it to feel native then you need to call the native API’s.</p>
<aside class="quote no-group" data-username="Eiji" data-post="26" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>I would like to give a try creating frameless, fullscreen and transparent window which could simulate window manager behaviours. However I was not sure about it and it’s why I think that’s biggest <img src="https://forum.elixirforum.com/uploads/default/original/2X/e/ec97a4d20dca83c1d59b0839e4f159c141fa11df.gif?v=15" title=":icon_question:" class="emoji emoji-custom" alt=":icon_question:" loading="lazy" width="20" height="20"> for what I’m planning.</p>
</blockquote>
</aside>
<p>Simulate means it will feel as ‘off’ as even the most accurate SPA’s via PWA’s.  A lot of things will not work right or at all.</p>
<aside class="quote no-group" data-username="Eiji" data-post="26" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Scraping data - depends on theme files some are even really easy.<br>
Again we do not need to have support for all exactly now. Harder themes could be delayed for later.</p>
</blockquote>
</aside>
<p>Some are easy.  All of the most-used ones are significantly hard except Window’s Registry parsing.</p>
<aside class="quote no-group" data-username="Eiji" data-post="26" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p><code>OpenGL</code> part - it should not be a problem for someone experienced in this topic<br>
Also again I did not had a chance to do anything bigger in <code>OpenGL</code> , so for me it looks hard.</p>
</blockquote>
</aside>
<p>It’s hard, not because of OpenGL, but because of having to replicate the rendering of the native drawing calls, “that” is a significant amount of work.</p>
<aside class="quote no-group" data-username="Eiji" data-post="26" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Reproduce window manager behaviours</p>
</blockquote>
</aside>
<p>At that point you are, quite literally, rewriting large swaths of every windowing system out instead of just calling the known interfaces…</p>
<aside class="quote no-group" data-username="Eiji" data-post="26" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Research and <code>OpenGL</code> work based on results<br>
In order to have everything prepared even if there is no scrapers for any theme files.</p>
</blockquote>
</aside>
<p>Linux, Mac, and Windows (and android and iOS and etc…) all draw their interfaces via 3D calls now (whether OGL, EGL, Vulkan, or DX), the rendering is not hard, rewriting the drawing to look native is what is hard, incredibly hard.</p>
<aside class="quote no-group" data-username="Eiji" data-post="26" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Make <code>scenic</code> (or its fork) work properly from <code>CLI</code> for end-user (instead of distillery releases).</p>
</blockquote>
</aside>
<p>Huh?  Like render it’s gui in text or something?</p>
<aside class="quote no-group" data-username="Eiji" data-post="26" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Add support for OS notifications, simple (icon + menu) tray icon etc.<br>
Later maybe even <code>Plasma</code> 5 custom tray support.</p>
</blockquote>
</aside>
<p>Every OS has interfaces for these, don’t duplicate the functionality as then it will lose the controllability of it from the OS itself.  Just call the interfaces.</p>
<p>Just as a note,but my Gut Reaction to the above is <em>significantly</em> more than $500 of work.  $500 is less than 10 hours of work for even a basic job to do the same and 10 hours is no where near enough for this sheer scale of coding needed, even 10 months I don’t think is anywhere near enough to any significant degree, this would be a many-year project if you want it feeling native but rendered within scenic.</p>
<p>If you want to draw native GUI’s, why not make the native calls or use an abstraction around those (of which both wxWidgets and Qt both are) instead?</p>
<p>A big note from the OP:</p>
<aside class="quote no-group" data-username="Eiji" data-post="1" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>I have just took a look at my browser ( <code>Vivaldi</code> ) settings window which is fully themed, have great i18n support and it’s just huge (16 categories). Writing it in <code>scenic</code> would take way too much time especially if we want to write proper dynamic search code and 1:1 theme support. Look that’s just settings window of first app which I had in mind.</p>
</blockquote>
</aside>
<p>Vivaldi uses Qt, that is why it is themeable and has proper i18n support.</p>
<p>Scenic absolutely <strong>rules</strong> on embedded devices, like Nerves builds, but if you want something feeling native on a desktop it is <em>not</em> suited for that and from how it is currently built I doubt it ever would be unless it starts wrapping a backend like Qt or so.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="115629" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/how-about-crowdfunding-for-scenic-based-libraries-projects/19983/27">Post #26</a>
	                </div>
	            </div>
              <div id="likers-container-115629" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="115629"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #26"></div>
  </section>
</div>
    <div class="postbit" id="115635" data-post-id="115635">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Eiji" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Eiji/120/36743_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Eiji
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="OvermindDL1" data-post="27" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>It’s still not CSS however.</p>
</blockquote>
</aside>
<p>yeah, but it’s really similar<br>
It’s like <code>CSS</code>, but it has its own extra properties and calls like <code>-gtk-scaled</code>, but browsers do the same having just different prefix like: <code>--webkit-*</code>.</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="27" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>And how do you determine that resolution? GTK doesn’t get it right at all, hence why it requires environment variable workarounds and so forth. Qt is one of the only things I’ve ever seen it get mostly right on linux and that’s only on wayland. X just doesn’t have the capabilities to let you know that information reliably, it wasn’t even a concept when it was created. Mac’s get it right 99% of the time, Windows fails on mismatched monitor DPI’s in most cases among others… It’s a world of pain if you want multiplatform hidpi and you aren’t using Qt.</p>
</blockquote>
</aside>
<p>Ah, I see … My bad here - I forgot about DPI. Yes it’s painful, but it’s not impossible. Also if it’s not working in other GUI libraries then it’s just another point to not use them. <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" loading="lazy" width="20" height="20"></p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="27" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Displaying it isn’t bad, it’s the input that is a horror.</p>
</blockquote>
</aside>
<p>oh, can you please link or describe it a bit more?</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="27" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>And if you are wanting to get that information from, say, GTK or QT or Windows themes then you have a dozen parsers there with a few interpreters and rewriting the rendering of each essentially from scratch. If you want it to feel native then you need to call the native API’s.</p>
</blockquote>
</aside>
<p>Wow … I think that dozens is too much. Well I have used lots of GUI libraries in lots of languages, but the most popular are <code>Windows</code> themes, <code>GTK+</code> (2 and 3) themes and <code>Qt</code> themes. I saw <code>Plasma</code> files which uses something like <code>Linux</code> config files. It’s popular format, so it should not be a problem. <code>CSS</code>-like format should not be a bigger problem as well. I’m not sure about <code>Windows</code> and <code>MacOS</code>, but as said we don’t need all now - the point is that to get all possible style attributes, implement them and later add scraper libraries.</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="27" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Simulate means it will feel as ‘off’ as even the most accurate SPA’s via PWA’s. A lot of things will not work right or at all.</p>
</blockquote>
</aside>
<p>I’m not sure what you are trying to say. Some things are not saved in theme files? For sure theme does not need to be 100% equal. The most important are input styles and colors specified in theme files (only later icons, sounds etc.). We should do a proper research and scrape as much as possible. If something is not possible to scrape then we would need to deal with it. It’s not a matter to do literally everything (like all possible components), but all things that are worth to. Some “super extra special” components which are only in one GUI library should not be really part of <code>scenic</code> - it’s like an edge case. Also nobody said that every component should be drawn in <code>scenic</code> only. That would be good if any developer could draw its own components and use fetched information from theme (let’s say button background color) for its own components.</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="27" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Some are easy. All of the most-used ones are significantly hard except Window’s Registry parsing.</p>
</blockquote>
</aside>
<p>You are first person I know which says good things about <code>Windows</code> registry. <img src="https://forum.elixirforum.com/uploads/default/original/2X/2/20c9c52366de24191270f0b11311379ce60ac82d.gif?v=15" title=":077:" class="emoji emoji-custom" alt=":077:" loading="lazy" width="20" height="20"></p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="27" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>It’s hard, not because of OpenGL, but because of having to replicate the rendering of the native drawing calls, “that” is a significant amount of work.</p>
</blockquote>
</aside>
<p><code>scenic</code> is doing whole rendering anyway. It’s just a matter of new style options. Yeah, it would take long. Nobody said that drawing UI is easy. It’s another point to not leave developers with this problem and simplify it as much as possible. <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="27" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>At that point you are, quite literally, rewriting large swaths of every windowing system out instead of just calling the known interfaces…</p>
</blockquote>
</aside>
<p>How you would like to call known interfaces in OS which simply does not support them? Maybe I made a really bad research, but last time I was looking I did not found any good window manager for <code>Windows</code>. There was time I was looking for <code>kwin</code> for <code>Windows</code>, but even basics <code>KDE</code> apps have experimental support and probably they still have after few years. If calling OS interfaces would be so easy every app would do it.</p>
<p>For sure if you know a better way to make all of that working simpler then I’m open to your suggestions. I don’t believe that <code>Qt</code> would allow to do that without any extra (<img src="https://forum.elixirforum.com/images/emoji/apple/exclamation.png?v=15" title=":exclamation:" class="emoji" alt=":exclamation:" loading="lazy" width="20" height="20">) work . As said I had tried lots of libraries and I had problem with simplest example of tabs in titlebar. I don’t expect that any GUI library have already support for more advanced things.</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="27" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Linux, Mac, and Windows (and android and iOS and etc…) all draw their interfaces via 3D calls now (whether OGL, EGL, Vulkan, or DX), the rendering is not hard, rewriting the drawing to look native is what is hard, incredibly hard.</p>
</blockquote>
</aside>
<p>I don’t want to reimplement everything of what you said. That’s definitely too much for me. <img src="https://forum.elixirforum.com/uploads/default/original/2X/2/20c9c52366de24191270f0b11311379ce60ac82d.gif?v=15" title=":077:" class="emoji emoji-custom" alt=":077:" loading="lazy" width="20" height="20"> Maybe in other words. Take a look at <code>Plasma</code> look and feel customization. I would like to basically scrape data from it and simply apply to <code>OpenGL</code> drawer without any <code>3D</code> work.</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="27" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Huh? Like render it’s gui in text or something?</p>
</blockquote>
</aside>
<p>Nope, sorry - I did not described it enough. When you have distillery then it generates release with its own command line options. I would like to have such release, but with my own options, my own <code>--help</code> and <code>--version</code> output etc.</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="27" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Every OS has interfaces for these, don’t duplicate the functionality as then it will lose the controllability of it from the OS itself. Just call the interfaces.</p>
</blockquote>
</aside>
<p>Yeah, in notifications and tray icon we would need some <code>NIF</code>s here.</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="27" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Just as a note,but my Gut Reaction to the above is <em>significantly</em> more than $500 of work. $500 is less than 10 hours of work for even a basic job to do the same and 10 hours is no where near enough for this sheer scale of coding needed, even 10 months I don’t think is anywhere near enough to any significant degree, this would be a many-year project if you want it feeling native but rendered within scenic.</p>
</blockquote>
</aside>
<p>ok, I see … you think nobody else would be interested with adding funds? That would be a small problem then. btw. 50 USD / hour - nice. <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" loading="lazy" width="20" height="20"> For now my salary is only 20 USD / hour.</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="27" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Vivaldi uses Qt, that is why it is themeable and has proper i18n support.</p>
</blockquote>
</aside>
<p>Yup, now:</p>
<ol>
<li>
<p>Can I use all behaviours of <code>kwin</code> in <code>Windows XP</code> build of <code>Vivaldi</code>?</p>
</li>
<li>
<p>Please link me to library documentation for those custom tabs. I really want to simply call <code>renderTabs()</code> in any app. Unfortunately I don’t believe it’s possible.</p>
</li>
<li>
<p>Themes there are really, really limited to few colors. After adding more components (without extra styles) then <code>scenic</code> would be more configurable.</p>
</li>
<li>
<p>At least for me <code>Vivaldi</code> uses different cursor style. Again it’s just cursor style. Something small that nobody would care, but it’s actually hitting my eyes. Just because of such weird cases I want to let end-user to decide on which theme he/she want to use.</p>
</li>
</ol>
<p>I like <code>Vivaldi</code>, but comparing to old versions of <code>Firefox</code> its also limited. It has much more GUI settings (comparing to <code>Firefox</code> preferences), but this could be solved before by simply adding one or two extensions (like <code>Configuration Mania</code>).</p>
<p>It’s possible to draw tabs in custom titlebar and even move it to any edge, but <strong>again</strong> every developer would need to do it on its own. One time as newbie I tried to look at source code of <code>Chromium</code> project and I just got lost. If any GUI app in <code>Elixir</code> is going to look like that without any change to split it in libraries then I don’t want to create GUI apps. Drawing everything on myself for every app would be even more painful.</p>
<p>Of course I’m open to any propositions, but everything already proposed is really limited by OS / specific window manager. None of solutions allows for example having <code>Plasma 5</code> behaviours in <code>Windows</code>.</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="27" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Scenic absolutely <strong>rules</strong> on embedded devices, like Nerves builds, but if you want something feeling native on a desktop it is <em>not</em> suited for that and from how it is currently built I doubt it ever would be unless it starts wrapping a backend like Qt or so.</p>
</blockquote>
</aside>
<p>Sorry, but after reading your post few times I still don’t get why I need to use <code>Qt</code> in order to add for example <code>shadow</code> option to <code>Button</code> component when <code>active</code>, <code>background</code> and <code>text</code> options are already available without it. I’m sure it’s not simplest to write drawing code, but somehow it’s working in <code>scenic</code> already. Why we can’t simply extend that and instead of passing raw values simply read something like <code>Linux</code> config file and pass value from it …</p>
<p>Maybe I got something wrong, but after reading your post, adding such example <code>shadow</code> option looks like lots of weeks of work without any certainty of success. If you would look at example configuration file content I have quoted then you would see that it contains names and rgb values which should be really easy to scrape, pass and they would just need to be drawn. Of course it’s more than this config file, but it’s also not like writing OS code for 10+ years.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="115635" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/how-about-crowdfunding-for-scenic-based-libraries-projects/19983/28">Post #27</a>
	                </div>
	            </div>
              <div id="likers-container-115635" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="115635"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #27"></div>
  </section>
</div>
    <div class="postbit" id="115701" data-post-id="115701">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="OvermindDL1" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/OvermindDL1/120/2677_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  OvermindDL1
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="Eiji" data-post="28" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Ah, I see … My bad here - I forgot about DPI. Yes it’s painful, but it’s not impossible. Also if it’s not working in other GUI libraries then it’s just another point to not use them. <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" loading="lazy" width="20" height="20"></p>
</blockquote>
</aside>
<p>Hence why Qt should be used, I’m unsure of anything that does it as well as it does.  ^.^</p>
<aside class="quote no-group" data-username="Eiji" data-post="28" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>oh, can you please link or describe it a bit more?</p>
</blockquote>
</aside>
<p>Remember that depending on how the user has their system setup then holding certain key combinations can cause a popup window to choose various characters, combinations of keys should print a different character altogether, typing a certain string of characters should all get combined into a single complex character (super common with asian scripts where typing a string of romanji gets turned into katakana or so), etc… etc… etc…  Handling input manually without calling the native interfaces means this will not work and thus means they can’t type.  Like this is a big problem on Steam, it’s never supported it and thus their messenger goes unused in certain areas of the world.</p>
<aside class="quote no-group" data-username="Eiji" data-post="28" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Wow … I think that dozens is too much.</p>
</blockquote>
</aside>
<p>Not even remotely, windows has more than a dozen just right off the bat, from the base system colors stored in the registry to the Forms API themeing to far far more.  Linux as well easily has over a dozen just across the more used windowing managers.  Just handling windows themeing properly is a horrible task.  Like how do you know if your edges should be curved or squared corners, what parts should be transparent and what shouldn’t, and how should they be transparent, is the transparency using the windows cloud shader/overlay, etc… etc… etc..  And that’s just a single aspect of the literal hundreds in windows themeing.  And then you start getting into the windows theme plugins and that’s just Good Luck There.  ^.^;</p>
<aside class="quote no-group" data-username="Eiji" data-post="28" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>The most important are input styles and colors specified in theme files (only later icons, sounds etc.).</p>
</blockquote>
</aside>
<p>Okay, so windows says that the titlebar should be rendered as 20% transparent with a moving cloud opacity mapping that blurs what’s behind it and the title text the opacity comes up to 90% opacity in a circle around around it fading in?  The UI calls all handle that for you, how would you expect to?  Or on my wife’s computer that has an overlay effect of where the mouse is that shows a kind of purple star in the background chrome in windows or where she can drag multiple applications together into the same window and gets a firefox-like tabbed interface at the top on the titlebar of all the programs?  How do you plan to handle that?</p>
<aside class="quote no-group" data-username="Eiji" data-post="28" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>You are first person I know which says good things about <code>Windows</code> registry. <img src="https://forum.elixirforum.com/uploads/default/original/2X/2/20c9c52366de24191270f0b11311379ce60ac82d.gif?v=15" title=":077:" class="emoji emoji-custom" alt=":077:" loading="lazy" width="20" height="20"></p>
</blockquote>
</aside>
<p>Lol, the Windows registry is not a bad ‘idea’, it’s just poorly implemented.  ^.^;</p>
<aside class="quote no-group" data-username="Eiji" data-post="28" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p><code>scenic</code> is doing whole rendering anyway. It’s just a matter of new style options. Yeah, it would take long. Nobody said that drawing UI is easy. It’s another point to not leave developers with this problem and simplify it as much as possible. <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
</blockquote>
</aside>
<p>That is why it is amazing on devices like Nerves systems and so forth.  It is significantly less useful on a desktop, notice how most desktop usages of it (all that I’ve seen at least) focus on the opengl rendering aspect of it, not rendering a gui but more of a game.</p>
<aside class="quote no-group" data-username="Eiji" data-post="28" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>How you would like to call known interfaces in OS which simply does not support them? Maybe I made a really bad research, but last time I was looking I did not found any good window manager for <code>Windows</code> . There was time I was looking for <code>kwin</code> for <code>Windows</code> , but even basics <code>KDE</code> apps have experimental support and probably they still have after few years. If calling OS interfaces would be so easy every app would do it.</p>
</blockquote>
</aside>
<p>Windows ‘window manager’ is not easy to replace, not even sure how, but the one it has is actually intensely powerful, far more so than most people realize, it’s also very crufty and supports all kind of backwards compatible things as well, and programs using only the older interfaces tend to look very ‘old’ as well, it makes the programs look very non-fitting, where the newer interfaces are actually incredibly powerful and complex.</p>
<p>How to call the known interfaces is like with any other system, you abstract it out, like Qt has already done that work for you even with much of the newest Windows API’s, and things like wxWidgets are significantly older in comparison, it looks like it belongs to Windows 98 rather than Windows 10.</p>
<aside class="quote no-group" data-username="Eiji" data-post="28" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>For sure if you know a better way to make all of that working simpler then I’m open to your suggestions. I don’t believe that <code>Qt</code> would allow to do that without any extra (<img src="https://forum.elixirforum.com/images/emoji/apple/exclamation.png?v=15" title=":exclamation:" class="emoji" alt=":exclamation:" loading="lazy" width="20" height="20">) work .</p>
</blockquote>
</aside>
<p>That Qt couldn’t do what?</p>
<aside class="quote no-group" data-username="Eiji" data-post="28" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>As said I had tried lots of libraries and I had problem with simplest example of tabs in titlebar. I don’t expect that any GUI library have already support for more advanced things.</p>
</blockquote>
</aside>
<p>Tabs in titlebar is a simple thing?  o.O</p>
<p>Usually the OS itself owns the titlebar, you have to tell the OS not to render it itself so you can render it instead, but in doing so you lose the abilities of the OS.  Even wxWidgets, GTK, and Qt all support setting that flag so you can then render it yourself, but in rendering it yourself you are not going to render it like the user expects it to be rendered to match the OS.  Like on mine or my wife’s computer if you don’t let the window manager handle the titlebar than we lose the capability to combine that program window with other  program windows in a single tabbed window.  That is very bad user interface.  At least chrome and firefox have the option in their settings to let the OS handle the titlebar so we get that ability back but if some user program doesn’t than that’s just infuriating, plus losing the other features on the titlebars from additional buttons, shading (‘minimizing’ the window to become “just” a titlebar), etc… etc…</p>
<aside class="quote no-group" data-username="Eiji" data-post="28" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>I don’t want to reimplement everything of what you said. That’s definitely too much for me. <img src="https://forum.elixirforum.com/uploads/default/original/2X/2/20c9c52366de24191270f0b11311379ce60ac82d.gif?v=15" title=":077:" class="emoji emoji-custom" alt=":077:" loading="lazy" width="20" height="20"> Maybe in other words. Take a look at <code>Plasma</code> look and feel customization. I would like to basically scrape data from it and simply apply to <code>OpenGL</code> drawer without any <code>3D</code> work.</p>
</blockquote>
</aside>
<p>Heh, just taking Plasma alone as the theme engine is easily the most complex of them all.  Theme scripts can literally render anything in any way that they want.  Supporting that means rewriting the Qt theme interpreter engine, which means supporting javascript, python, and native binaries at the very least as those are the 3 built-in supported languages/interfaces and all 3 are heavily used.  Plasma absolutely blows <em>everything</em> else away in its themeability as a window manager.  I quite literally have a clock to the left of my shade/minimize/restore/close buttons in every app that shows the time in a 2-line ISO format, and I just realized how hard that tiny little feature would be to do in any other windowing manager.  That’s even ignoring the fact that my windows ‘are’ 3d constructions here, I can even flip them around and some applications even render different things on the backsides (I wish that feature were used more).</p>
<aside class="quote no-group" data-username="Eiji" data-post="28" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Nope, sorry - I did not described it enough. When you have distillery then it generates release with its own command line options. I would like to have such release, but with my own options, my own <code>--help</code> and <code>--version</code> output etc.</p>
</blockquote>
</aside>
<p>You can include a wrapper script in distillery for that.  <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
<aside class="quote no-group" data-username="Eiji" data-post="28" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>ok, I see … you think nobody else would be interested with adding funds? That would be a small problem then. btw. 50 USD / hour - nice. <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" loading="lazy" width="20" height="20"> For now my salary is only 20 USD / hour.</p>
</blockquote>
</aside>
<p>I’d doubt it in the amounts required, this is effectively rewriting something as complex as Qt.  ^.^;</p>
<aside class="quote no-group" data-username="Eiji" data-post="28" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Can I use all behaviours of <code>kwin</code> in <code>Windows XP</code> build of <code>Vivaldi</code> ?</p>
</blockquote>
</aside>
<p>Huh?  Since when does kWin work on windows?  Windows, even Windows 10, doesn’t even support half of what plasma support.</p>
<aside class="quote no-group" data-username="Eiji" data-post="28" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Please link me to library documentation for those custom tabs. I really want to simply call <code>renderTabs()</code> in any app. Unfortunately I don’t believe it’s possible.</p>
</blockquote>
</aside>
<p>Huh?  What would this <code>renderTabs</code> function do?  How would you want them rendered?  What should they display?  What listens to the events?  What information should they show?  Etc… etc…  Tabbed interfaces are not trivial things regardless of where they are (though if you want them at the top then just render them at the top with the titlebar flag disabled, although some window managers will still override you and put a titlebar as they don’t support titlebar-less modes).</p>
<aside class="quote no-group" data-username="Eiji" data-post="28" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Themes there are really, really limited to few colors. After adding more components (without extra styles) then <code>scenic</code> would be more configurable.</p>
</blockquote>
</aside>
<p>Themes havn’t been “Just Colors” in over a decade now.  Now they are more like a texture + shaders on everything from Windows 10 to Plasma and more, and limiting yourself to just colors means that your application won’t fit in with the rest of the system.</p>
<aside class="quote no-group" data-username="Eiji" data-post="28" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>At least for me <code>Vivaldi</code> uses different cursor style. Again it’s just cursor style. Something small that nobody would care, but it’s actually hitting my eyes. Just because of such weird cases I want to let end-user to decide on which theme he/she want to use.</p>
</blockquote>
</aside>
<p>Cursor style?  It uses my defined OS cursors here.  Unsure of what is being referenced?</p>
<aside class="quote no-group" data-username="Eiji" data-post="28" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>I like <code>Vivaldi</code> , but comparing to old versions of <code>Firefox</code> its also limited. It has much more GUI settings (comparing to <code>Firefox</code> preferences), but this could be solved before by simply adding one or two extensions (like <code>Configuration Mania</code> ).</p>
</blockquote>
</aside>
<p>Older Firefox <em>very</em> much did not mesh with the OS, I like it <em>quite</em> a lot more now.  In older versions the chrome was rendered via the DOM as well (hence why it was so configureable), but it lost so many features in doing so and was so slow that replacing it with system-native calls fixed both issues.  If someone wants to theme it now then they can use their normal OS constructs.</p>
<aside class="quote no-group" data-username="Eiji" data-post="28" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>It’s possible to draw tabs in custom titlebar and even move it to any edge, but <strong>again</strong> every developer would need to do it on its own. One time as newbie I tried to look at source code of <code>Chromium</code> project and I just got lost. If any GUI app in <code>Elixir</code> is going to look like that without any change to split it in libraries then I don’t want to create GUI apps. Drawing everything on myself for every app would be even more painful.</p>
</blockquote>
</aside>
<p>Which is exactly why you should use the normal OS constructs, that is the least painful way to do UI rendering.</p>
<aside class="quote no-group" data-username="Eiji" data-post="28" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>None of solutions allows for example having <code>Plasma 5</code> behaviours in <code>Windows</code> .</p>
</blockquote>
</aside>
<p>That’s because Windows is not <em>capable</em> of plasma’s behaviours.  <img src="https://forum.elixirforum.com/images/emoji/apple/wink.png?v=15" title=":wink:" class="emoji" alt=":wink:" loading="lazy" width="20" height="20"><br>
Plasma’s interfaces and themeing is a full scripting system, it can quite literally do anything in regards to rendering and input handling.  If the user wants a clock on all their titlebar’s, that’s trivial.  If the user wants windows rendered as circles, that’s also doable though a bit more work.  Handling all these cases on the application side is an impossible task.</p>
<aside class="quote no-group" data-username="Eiji" data-post="28" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Sorry, but after reading your post few times I still don’t get why I need to use <code>Qt</code> in order to add for example <code>shadow</code> option to <code>Button</code> component when <code>active</code> , <code>background</code> and <code>text</code> options are already available without it. I’m sure it’s not simplest to write drawing code, but somehow it’s working in <code>scenic</code> already. Why we can’t simply extend that and instead of passing raw values simply read something like <code>Linux</code> config file and pass value from it …</p>
</blockquote>
</aside>
<p>Huh?  I’m not getting a reference about a shadow?  I’m not sure what Qt has to do with shadows?  Generally shadows on things are handled by the OS’s UI drawing interfaces.</p>
<aside class="quote no-group" data-username="Eiji" data-post="28" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Maybe I got something wrong, but after reading your post, adding such example <code>shadow</code> option looks like lots of weeks of work without any certainty of success. If you would look at example configuration file content I have quoted then you would see that it contains names and rgb values which should be really easy to scrape, pass and they would just need to be drawn. Of course it’s more than this config file, but it’s also not like writing OS code for 10+ years.</p>
</blockquote>
</aside>
<p>If you want to manually render a trivial box shadow of a button then you are free to do that yourself, but it is unlikely to look like how the rest of the OS does it, especially if there is a glowing star on a cursor (wife’s computer) that changes the direction and length and color of the shadows based on their position to the cursor.  That is not something you can just ‘read from a config file’.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="115701" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/how-about-crowdfunding-for-scenic-based-libraries-projects/19983/29">Post #28</a>
	                </div>
	            </div>
              <div id="likers-container-115701" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="115701"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #28"></div>
  </section>
</div>
    <div class="postbit" id="115719" data-post-id="115719">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Eiji" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Eiji/120/36743_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Eiji
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="OvermindDL1" data-post="29" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Remember that depending on how the user has their system setup then holding certain key combinations can cause a popup window to choose various characters, combinations of keys should print a different character altogether, typing a certain string of characters should all get combined into a single complex character (super common with asian scripts where typing a string of romanji gets turned into katakana or so), etc… etc… etc… Handling input manually without calling the native interfaces means this will not work and thus means they can’t type. Like this is a big problem on Steam, it’s never supported it and thus their messenger goes unused in certain areas of the world.</p>
</blockquote>
</aside>
<p>ok, that’s really good point! Yeah, I know about kanji, katakana and romanji cases. I should remember that.</p>
<p>For sure I did not say to not call anything from system. I would just o limit drawing (components) to scrape and draw.</p>
<aside class="quote no-group quote-modified" data-username="OvermindDL1" data-post="29" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Not even remotely, windows has more than a dozen just right off the bat, from the base system colors stored in the registry to the Forms API themeing to far far more. Linux as well easily has over a dozen just across the more used windowing managers. Just handling windows themeing properly is a horrible task. Like how do you know if your edges should be curved or squared corners, what parts should be transparent and what shouldn’t, and how should they be transparent, is the transparency using the windows cloud shader/overlay, etc… etc… etc… And that’s just a single aspect of the literal hundreds in windows themeing. And then you start getting into the windows theme plugins and that’s just Good Luck There. ^.^;</p>
</blockquote>
</aside>
<p>Yup, that’s definitely lots of data to scrape, but … how to say that … it does not scary me. <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" loading="lazy" width="20" height="20"></p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="29" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Okay, so windows says that the titlebar should be rendered as 20% transparent with a moving cloud opacity mapping that blurs what’s behind it and the title text the opacity comes up to 90% opacity in a circle around around it fading in? The UI calls all handle that for you, how would you expect to?</p>
</blockquote>
</aside>
<p>That should be scraped - basically everything related to theme itself.</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="29" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Or on my wife’s computer that has an overlay effect of where the mouse is that shows a kind of purple star in the background chrome in windows or where she can drag multiple applications together into the same window and gets a firefox-like tabbed interface at the top on the titlebar of all the programs? How do you plan to handle that?</p>
</blockquote>
</aside>
<p>wow, wow, wow<br>
We have big misunderstanding here. First of all I’m talking about app themes which includes only part of window manager themes (titlebar + window related actions like shortcuts <code>&lt;Alt&gt;</code> + mouse etc).</p>
<p>Let’s give a simpler example. Moving window with <code>&lt;Alt&gt;</code> + left mouse to top-right corner would act like <code>&lt;alt&gt;</code>+<code>&lt;tab&gt;</code>. Let’s split it on some parts:</p>
<ol>
<li>Catching combination (<code>&lt;alt&gt;</code> + left mouse)</li>
<li>Catching mouse move events</li>
<li>Moving window based on event from 2nd point</li>
<li>Catching moving window to corner</li>
<li>Call based on even from 4th point</li>
</ol>
<p>What I want to handle is: <code>1</code>, <code>2</code> and <code>4</code>.<br>
What I want to call is: <code>3</code> and <code>5</code>.<br>
Look that I want to solve things which are generic (like moving window) and let window manger handle rest by resending catched events. Let’s say that some OS would not support call from 5th point. We could check support for that based on scraped information and do any of:</p>
<ol>
<li>add info to log file</li>
<li>display system notification</li>
<li>display warning/error window</li>
</ol>
<p>What I want to scrape is all window manager keyboards and its actions. When scraped I’m going to manage events on myself and resend them to window manager if specified action is supported or not.</p>
<p>Here really helpful would be to add <code>NIF</code> for example for <code>dbus</code> calls as it would be a really powerful for some tools like implementing <code>KDE</code> shortcuts. What such tool would need is to:</p>
<ol>
<li>read global shortcuts</li>
<li>lookup for binaries from <code>$PATH</code></li>
<li>lookup for <code>dbus</code> calls</li>
<li>assign, change and unassign shortcuts</li>
<li>GUI library<br>
Except 4th point everything would be available from helper library and such tool is going to be trivially implemented.</li>
</ol>
<p>Again what I want to is to handle:</p>
<ol>
<li>Drawing</li>
<li>Events</li>
<li>Scraping</li>
</ol>
<p>Nothing more. I don’t want to reimplement full window manager (only events and scraping parts). Sorry if I did not say it enough clearly. <img src="https://forum.elixirforum.com/images/emoji/apple/frowning.png?v=15" title=":frowning:" class="emoji" alt=":frowning:" loading="lazy" width="20" height="20"></p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="29" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Lol, the Windows registry is not a bad ‘idea’, it’s just poorly implemented. ^.^;</p>
</blockquote>
</aside>
<p>Well … service help thinks different. Without special tools for cleaning and lookup into registry it would be extremely painful to find autostart entries (from memory - especially if you have more tasks in mind).</p>
<p>Maybe there were good ideas, but same goes to <code>NTFS</code> - it was good … lots of years ago. For sure same goes to <code>X</code> server on <code>Linux</code>, but unlike <code>Windows</code> it’s replaceable - it’s just a matter of time. Honestly I would like to see any distribution now on <code>Wayland</code> …</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="29" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>That is why it is amazing on devices like Nerves systems and so forth. It is significantly less useful on a desktop, notice how most desktop usages of it (all that I’ve seen at least) focus on the opengl rendering aspect of it, not rendering a gui but more of a game.</p>
</blockquote>
</aside>
<p>Well … I prefer to let <code>Raspberry PI</code> do things for what is designed too. I’m not one of those people which runs <code>Minecraft</code> on it. <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" loading="lazy" width="20" height="20"></p>
<p>As said <code>OpenGL</code> (i.e. custom rendering) in some cases (like custom titlebar and drawing separate tab bar on it) requires lots of drawing work (especially when you think about animations).</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="29" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Windows ‘window manager’ is not easy to replace, not even sure how, but the one it has is actually intensely powerful, far more so than most people realize, it’s also very crufty and supports all kind of backwards compatible things as well, and programs using only the older interfaces tend to look very ‘old’ as well, it makes the programs look very non-fitting, where the newer interfaces are actually incredibly powerful and complex.</p>
</blockquote>
</aside>
<p>Please don’t joke about backwards compatibility - I still can’t stop laugh after previous jokes. <img src="https://forum.elixirforum.com/uploads/default/original/2X/2/20c9c52366de24191270f0b11311379ce60ac82d.gif?v=15" title=":077:" class="emoji emoji-custom" alt=":077:" loading="lazy" width="20" height="20"><br>
I would give just one example:<br>
I had <code>GTA San Andreas</code> with one big modification and here is how backwards compatibility worked for it:</p>
<ol>
<li>Windows XP - designed for it, so it worked</li>
<li>Windows 7 - problems with rendering, black screen etc.</li>
<li>Gentoo Linux with wine - it works better than on <code>Windows XP</code> - it had even more <code>fps</code>. I can say that without any tool as I have problem with eyes and lots of small thing could hurt me a lot. <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" loading="lazy" width="20" height="20"></li>
</ol>
<p>I would not even talk about smaller game which returns error, because of broken backwards compatibility related to network. Basically backwards compatibility works when you install <code>Windows XP Mode</code> or <code>Windows XP</code> on virtual machine. Notice that I have talked about one of most popular game series <code>GTA</code>. Did you know about awesome part of backwards compatibility which forced change naming of <code>Windows</code> from <code>9</code> to <code>10</code>? <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" loading="lazy" width="20" height="20"></p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="29" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>How to call the known interfaces is like with any other system, you abstract it out, like Qt has already done that work for you even with much of the newest Windows API’s, and things like wxWidgets are significantly older in comparison, it looks like it belongs to Windows 98 rather than Windows 10.</p>
</blockquote>
</aside>
<p>I need to agree. While <code>Qt</code> did not give me enough components and was bad at some points (as you said license) it was still pretty nice designed.</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="29" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>That Qt couldn’t do what?</p>
</blockquote>
</aside>
<p>For sure: I need to draw custom tab bar component on custom title bar component. I can do it in <code>Qt</code> or in <code>scenic</code>. At end I need to draw component, so <code>Qt</code> does not give me any benefit at least in that point. Again I can agree that <code>Qt</code> works really nice and it was probably easiest <code>GUI</code> library to learn.</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="29" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Tabs in titlebar is a simple thing? o.O</p>
</blockquote>
</aside>
<p>Yup, unlike <code>Qt</code> library <code>GTK+</code> allows to add custom component to titlebar, but unfortunately I can’t make it simple work with <code>GtkNotebook</code>, so again I would be forced to draw me own component. Tabs in titlebar saves lots of space on monitor and I saw lots of people which was trying to do it on their self manually.</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="29" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Usually the OS itself owns the titlebar, you have to tell the OS not to render it itself so you can render it instead, but in doing so you lose the abilities of the OS. Even wxWidgets, GTK, and Qt all support setting that flag so you can then render it yourself, but in rendering it yourself you are not going to render it like the user expects it to be rendered to match the OS. Like on mine or my wife’s computer if you don’t let the window manager handle the titlebar than we lose the capability to combine that program window with other program windows in a single tabbed window. That is very bad user interface. At least chrome and firefox have the option in their settings to let the OS handle the titlebar so we get that ability back but if some user program doesn’t than that’s just infuriating, plus losing the other features on the titlebars from additional buttons, shading (‘minimizing’ the window to become “just” a titlebar), etc… etc…</p>
</blockquote>
</aside>
<p><strong>EXACTLY</strong><br>
Everything you said is correct. It’s why I want to add library which would also design window with advanced <code>GUI</code> preferences which would optionally disable custom titlebar drawing. Exactly just like in <code>Chrome</code> or <code>Firefox</code> as you said. They have really good integration with OS (moving window to corner etc. That’s what I want to do.</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="29" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Heh, just taking Plasma alone as the theme engine is easily the most complex of them all. Theme scripts can literally render anything in any way that they want. Supporting that means rewriting the Qt theme interpreter engine, which means supporting javascript, python, and native binaries at the very least as those are the 3 built-in supported languages/interfaces and all 3 are heavily used. Plasma absolutely blows <em>everything</em> else away in its themeability as a window manager. I quite literally have a clock to the left of my shade/minimize/restore/close buttons in every app that shows the time in a 2-line ISO format, and I just realized how hard that tiny little feature would be to do in any other windowing manager. That’s even ignoring the fact that my windows ‘are’ 3d constructions here, I can even flip them around and some applications even render different things on the backsides (I wish that feature were used more).</p>
</blockquote>
</aside>
<p>ok, now you really surpised me!<br>
I did not know that’s even possible! I though it’s not possible to touch titltebar in <code>Qt</code> and you wrote even some scripts, nice! For sure I want only those things which could be scraped. I don’t want to execute custom scripts (maybe later optionally <code>Qt</code> library could do that for me, but definitely I don’t want to do such staff).</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="29" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>You can include a wrapper script in distillery for that. <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
</blockquote>
</aside>
<p>Oh, you mean this one:<br>
<a href="https://hexdocs.pm/distillery/Mix.Tasks.Release.html#module-executables" class="onebox" target="_blank" rel="noopener nofollow ugc">https://hexdocs.pm/distillery/Mix.Tasks.Release.html#module-executables</a><br>
I really missed that - I just can’t believe. <img src="https://forum.elixirforum.com/images/emoji/apple/confused.png?v=15" title=":confused:" class="emoji" alt=":confused:" loading="lazy" width="20" height="20"> I need to investigate. Hope it does not give too much access (after self-extracting) for end-user as I saw in releases lots of debug options.</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="29" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>I’d doubt it in the amounts required, this is effectively rewriting something as complex as Qt. ^.^;</p>
</blockquote>
</aside>
<p>I would not go so deeper … I … I promise! <img src="https://forum.elixirforum.com/uploads/default/original/2X/2/20c9c52366de24191270f0b11311379ce60ac82d.gif?v=15" title=":077:" class="emoji emoji-custom" alt=":077:" loading="lazy" width="20" height="20"></p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="29" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Huh? Since when does kWin work on windows? Windows, even Windows 10, doesn’t even support half of what plasma support.</p>
</blockquote>
</aside>
<p>Exactly. It’s why I want to draw custom titlebar in order to (just for example) reorder buttons as <code>Plasma</code> allows that. I don’t want to rewrite window manager from <code>Windows</code>.</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="29" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Huh? What would this <code>renderTabs</code> function do? How would you want them rendered? What should they display? What listens to the events? What information should they show? Etc… etc… Tabbed interfaces are not trivial things regardless of where they are (though if you want them at the top then just render them at the top with the titlebar flag disabled, although some window managers will still override you and put a titlebar as they don’t support titlebar-less modes).</p>
</blockquote>
</aside>
<p>Right and I would need to draw everything including animations (reordering tabs etc). I don’t want to leave every developer doing that for herself/himself. If I remember correctly <code>Qt</code> allows to split it on <code>QTabBar</code> and … <code>QContainer</code>(?) - something like that. I would like to have something like that in <code>GTK+</code> which allows to replace <code>titlebar</code> label with custom widget.</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="29" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Themes havn’t been “Just Colors” in over a decade now. Now they are more like a texture + shaders on everything from Windows 10 to Plasma and more, and limiting yourself to just colors means that your application won’t fit in with the rest of the system.</p>
</blockquote>
</aside>
<p>Yeah, that’s right. I just said it in short. Of course textures would be scraped in same way.</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="29" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Cursor style? It uses my defined OS cursors here. Unsure of what is being referenced?</p>
</blockquote>
</aside>
<p>I have black (probably <code>X</code> server default if I remember correctly).</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="29" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Plasma’s interfaces and themeing is a full scripting system, it can quite literally do anything in regards to rendering and input handling. If the user wants a clock on all their titlebar’s, that’s trivial. If the user wants windows rendered as circles, that’s also doable though a bit more work. Handling all these cases on the application side is an impossible task.</p>
</blockquote>
</aside>
<p>No, no, no - a bit too much. Again I prefer to not touch scripting or at least call them if current environment supports that.</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="29" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Huh? I’m not getting a reference about a shadow? I’m not sure what Qt has to do with shadows? Generally shadows on things are handled by the OS’s UI drawing interfaces.</p>
</blockquote>
</aside>
<p>We have some misunderstanding. You talked about special cases which are possible to only one specified window manager and which are hard to reimplement. From this I though that every part I described looks really hard to implement for you, but you talked about edge cases like scripting.</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="29" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>If you want to manually render a trivial box shadow of a button then you are free to do that yourself, but it is unlikely to look like how the rest of the OS does it, especially if there is a glowing star on a cursor (wife’s computer) that changes the direction and length and color of the shadows based on their position to the cursor. That is not something you can just ‘read from a config file’.</p>
</blockquote>
</aside>
<p>I’m not sure - depends on implementation. Maybe this tool allows to read color and mix it with its own. I don’t know, but yeah such cases are definitely too more to handle manually.</p>
<p>Basically I want to implement mainly <code>GtkHeaderBar</code> + <code>QTabBar</code> (hope I remember name properly) + allow to change theme from other GUI libraries (not only <code>GTK+</code> themes). Things like reorder titlebar buttons or move titlebar to different edge etc. Rest should take window manager assuming if it’s not conflicting with custom titlebar.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="115719" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/how-about-crowdfunding-for-scenic-based-libraries-projects/19983/30">Post #29</a>
	                </div>
	            </div>
              <div id="likers-container-115719" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="115719"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #29"></div>
  </section>
</div>
    <div class="postbit" id="115729" data-post-id="115729">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="OvermindDL1" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/OvermindDL1/120/2677_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  OvermindDL1
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="Eiji" data-post="30" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>We have big misunderstanding here. First of all I’m talking about app themes which includes only part of window manager themes (titlebar + window related actions like shortcuts <code>&lt;Alt&gt;</code> + mouse etc).</p>
</blockquote>
</aside>
<p>Well that’s the thing, the OS theme effects the rendering of the widgets/components within programs as well, and it is horribly obvious when a program does some manual rendering of, say, even a button because then it looks horribly out of place.</p>
<aside class="quote no-group" data-username="Eiji" data-post="30" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<ol>
<li>Catching combination ( <code>&lt;alt&gt;</code> + left mouse)</li>
<li>Catching mouse move events</li>
<li>Moving window based on event from 2nd point</li>
<li>Catching moving window to corner</li>
<li>Call based on even from 4th point</li>
</ol>
<p>What I want to handle is: <code>1</code> , <code>2</code> and <code>4</code> .<br>
What I want to call is: <code>3</code> and <code>5</code> .<br>
Look that I want to solve things which are generic (like moving window) and let window manger handle rest by resending catched events. Let’s say that some OS would not support call from 5th point. We could check support for that based on scraped information and do any of:</p>
</blockquote>
</aside>
<p>Even moving a window is not generic though.  The growing standard display on linux is now Wayland, Wayland does not have a concept of a simple 2d drawing screen.  There are even wayland plugins that render programs as floating windows in a 3d landscape that you walk around in either via an FPS style controls on screen or via a VR setup.  Not letting the window manager control these things will absolutely break in quite a number of times.</p>
<aside class="quote no-group" data-username="Eiji" data-post="30" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>What I want to scrape is all window manager keyboards and its actions.</p>
</blockquote>
</aside>
<p>How do you scrape all such things though?  A lot of then are not just simple hotkey mappings and so forth but are entire running scripts that dynamically respond to various changing conditions.</p>
<aside class="quote no-group" data-username="Eiji" data-post="30" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>read global shortcuts</p>
</blockquote>
</aside>
<p>That would only read static global shortcuts.  On my computer I have a huge number of dynamic shortcuts via scripts (simple bash scripts) that do different things at different times with different commands.</p>
<aside class="quote no-group" data-username="Eiji" data-post="30" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>lookup for binaries from <code>$PATH</code></p>
</blockquote>
</aside>
<p>What for?  And that wouldn’t catch direct calls either.</p>
<aside class="quote no-group" data-username="Eiji" data-post="30" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>lookup for <code>dbus</code> calls</p>
</blockquote>
</aside>
<p>DBUS is introspectable and self-documenting (mostly), you can just introspect into it.</p>
<aside class="quote no-group" data-username="Eiji" data-post="30" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>assign, change and unassign shortcuts</p>
</blockquote>
</aside>
<p>Heh, a user program definitely doesn’t have access to do that except within their own scope.</p>
<aside class="quote no-group" data-username="Eiji" data-post="30" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Drawing</p>
</blockquote>
</aside>
<p>This is still the hardest part overall, it’s about impossible to render things the way the native system does without just letting the native sytem itself do the rendering, there is quite literally an infinite amount of things to consider otherwise.</p>
<aside class="quote no-group" data-username="Eiji" data-post="30" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Events</p>
</blockquote>
</aside>
<p>And if those are dynamic based on non-static conditions?</p>
<aside class="quote no-group" data-username="Eiji" data-post="30" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Scraping</p>
</blockquote>
</aside>
<p>This means writing full language interpreters for <em>so</em> many different formats while handling native binaries, javascript, and python at the very very least, just for KDE alone, on Windows there is a great deal, etc… etc…</p>
<aside class="quote no-group" data-username="Eiji" data-post="30" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Well … service help thinks different. Without special tools for cleaning and lookup into registry it would be extremely painful to find autostart entries (from memory - especially if you have more tasks in mind).</p>
</blockquote>
</aside>
<p>Huh?  Autostart entries are on a specific path, very easy to access, although windows has quite a variety of non-registry based autostart areas as well.</p>
<aside class="quote no-group" data-username="Eiji" data-post="30" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Maybe there were good ideas, but same goes to <code>NTFS</code> - it was good … lots of years ago. For sure same goes to <code>X</code> server on <code>Linux</code> , but unlike <code>Windows</code> it’s replaceable - it’s just a matter of time. Honestly I would like to see any distribution now on <code>Wayland</code> …</p>
</blockquote>
</aside>
<p>Quite a number are on Wayland now with a fallback to X if your GPU doesn’t support 3d-accel.  Wayland is even default for most KDE distributions I’ve seen lately.  <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
<aside class="quote no-group" data-username="Eiji" data-post="30" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>As said <code>OpenGL</code> (i.e. custom rendering) in some cases (like custom titlebar and drawing separate tab bar on it) requires lots of drawing work (especially when you think about animations).</p>
</blockquote>
</aside>
<p>About every modern OS out already renders windows on a 3d context (which you are technically doubling up on with scenic, scenic renders to a context it creates, which draws to the OS context, which draws to the screen, with a native app you can skip that indirection on many systems, including windows).  Even on windows you can get access to a windows framebuffer directly (which skips the windows managed chrome of course).</p>
<aside class="quote no-group" data-username="Eiji" data-post="30" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Please don’t joke about backwards compatibility - I still can’t stop laugh after previous jokes. <img src="https://forum.elixirforum.com/uploads/default/original/2X/2/20c9c52366de24191270f0b11311379ce60ac82d.gif?v=15" title=":077:" class="emoji emoji-custom" alt=":077:" loading="lazy" width="20" height="20"><br>
I would give just one example:<br>
I had <code>GTA San Andreas</code> with one big modification and here is how backwards compatibility worked for it:</p>
<ol>
<li>Windows XP - designed for it, so it worked</li>
<li>Windows 7 - problems with rendering, black screen etc.</li>
<li>Gentoo Linux with wine - it works better than on <code>Windows XP</code> - it had even more <code>fps</code> . I can say that without any tool as I have problem with eyes and lots of small thing could hurt me a lot. <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" loading="lazy" width="20" height="20"></li>
</ol>
</blockquote>
</aside>
<p>I’m <em>extremely</em> certain GTA San Andreas renders in OpenGL/DX, thus it doesn’t use the native UI calls at all, thus backwards compat is unrelated here.  <img src="https://forum.elixirforum.com/images/emoji/apple/wink.png?v=15" title=":wink:" class="emoji" alt=":wink:" loading="lazy" width="20" height="20"><br>
Backwards compat with it having issues rendering is likely either it not following the OGL/DX spec properly or broken drivers, neither of which are Windows fault.  Windows itself, much as I don’t really like most of it, is <em>fantastic</em> with most of its backwards compatibility (now if only that extended to the rest of Microsoft).</p>
<aside class="quote no-group" data-username="Eiji" data-post="30" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Did you know about awesome part of backwards compatibility which forced change naming of <code>Windows</code> from <code>9</code> to <code>10</code> ? <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" loading="lazy" width="20" height="20"></p>
</blockquote>
</aside>
<p>That is because a <em>LOT</em> of exceptionally poorly made programs tested the windows version by grabbing the string and seeing if it starts with “Windows 9*” instead of using the <em>actual</em> interfaces for testing the windows version number.  Again, Windows did the right thing here, a lot of programmers didn’t.</p>
<aside class="quote no-group" data-username="Eiji" data-post="30" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>For sure: I need to draw custom tab bar component on custom title bar component. I can do it in <code>Qt</code> or in <code>scenic</code> . At end I need to draw component, so <code>Qt</code> does not give me any benefit at least in that point. Again I can agree that <code>Qt</code> works really nice and it was probably easiest <code>GUI</code> library to learn.</p>
</blockquote>
</aside>
<p>QT doesn’t give any benefit?  Other than that it has already abstracted the OS UI native calls or that it gives you an OGL context that you can draw into or that you can override the drawing and theme anything differently or that you could just put a tab bar at the top and init the window with the NO_TITLEBAR flag or anything of the huge amount of other things?  What does scenic gain over it?</p>
<aside class="quote no-group" data-username="Eiji" data-post="30" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Yup, unlike <code>Qt</code> library <code>GTK+</code> allows to add custom component to titlebar, but unfortunately I can’t make it simple work with <code>GtkNotebook</code> , so again I would be forced to draw me own component. Tabs in titlebar saves lots of space on monitor and I saw lots of people which was trying to do it on their self manually.</p>
</blockquote>
</aside>
<p>Yeah it does that by just turning off the titlebar management, like you can do in Qt or wxWidgets or whatever else.  <img src="https://forum.elixirforum.com/images/emoji/apple/wink.png?v=15" title=":wink:" class="emoji" alt=":wink:" loading="lazy" width="20" height="20"></p>
<p>In general tabs on a titlebar doesn’t save space unless an app already has tabs.  For me it doesn’t save space even in programs ‘with’ tabs like chrome/firefox/whatever as I still have a tab bar above that for combining multiple different programs into a single window.  In addition you, say in windows or whatever, still have the taskbar on whatever edge of the screen you want that is already a set of ‘tab-like’ things that can merge windows of a program or not optionally among other things that the user can already position as they want.</p>
<aside class="quote no-group" data-username="Eiji" data-post="30" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>They have really good integration with OS (moving window to corner etc.</p>
</blockquote>
</aside>
<p>No clue what you are referencing here either, they don’t do anything of the sort, my window manager does, and I know its my window manager doing it because I get the 3D window manager effect of it when it snaps, which is absolutely <em>not</em> something that the program itself can do at 60fps.</p>
<aside class="quote no-group" data-username="Eiji" data-post="30" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>ok, now you really surpised me!<br>
I did not know that’s even possible! I though it’s not possible to touch titltebar in <code>Qt</code> and you wrote even some scripts, nice! For sure I want only those things which could be scraped. I don’t want to execute custom scripts (maybe later optionally <code>Qt</code> library could do that for me, but definitely I don’t want to do such staff).</p>
</blockquote>
</aside>
<p>Then call into the native interfaces, without it the interfaces will be broken for many user functions.</p>
<aside class="quote no-group" data-username="Eiji" data-post="30" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Exactly. It’s why I want to draw custom titlebar in order to (just for example) reorder buttons as <code>Plasma</code> allows that. I don’t want to rewrite window manager from <code>Windows</code> .</p>
</blockquote>
</aside>
<p>Except plasma doesn’t just reorder.  Even right now my Close button is a dark X in a gray circle that fades in to red when I hover over it over about 150ms while the X changes shape to be more bold over that same 150ms, or the maximize button is kind of a big up caret looking thing that fades in to blue when hovered and when clicked the window scales with a slight quick bounce to full screen while the maximize button kind of ‘folds’ down into 2 carets that then attach at their ends forming a diamond, etc… for all the rest of the buttons as well (minimize, shading, pinning, etc…).  These are controlled and managed by compiled ‘scripts’, it’s not a little file that you can just scrape.  How would you manage to replicate this without calling the native interfaces?</p>
<aside class="quote no-group" data-username="Eiji" data-post="30" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Right and I would need to draw everything including animations (reordering tabs etc). I don’t want to leave every developer doing that for herself/himself. If I remember correctly <code>Qt</code> allows to split it on <code>QTabBar</code> and … <code>QContainer</code> (?) - something like that. I would like to have something like that in <code>GTK+</code> which allows to replace <code>titlebar</code> label with custom widget.</p>
</blockquote>
</aside>
<p>Leave that to the native interfaces then, they shouldn’t have to implement that.  That is what things like the KDE Framework are for (KDE Framework is an extra set of components and utilities on top of Qt, since KDE is built on Qt, and KDE Framework programs can be compiled for anything from windows to mac to iPhones/Android to much more).</p>
<aside class="quote no-group" data-username="Eiji" data-post="30" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Of course textures would be scraped in same way.</p>
</blockquote>
</aside>
<p>How would that happen?  If such a texture does not exist as a file on the filesystem but is another framebuffer entirely with its own dynamic content, how would you do that?</p>
<aside class="quote no-group" data-username="Eiji" data-post="30" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>I have black (probably <code>X</code> server default if I remember correctly).</p>
</blockquote>
</aside>
<p>That sounds horrifying…  ^.^;</p>
<p>Yeah the big/giant black X with the white outline is the default X cursor, that also means you are using X and not Wayland.  ^.^;</p>
<aside class="quote no-group" data-username="Eiji" data-post="30" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>No, no, no - a bit too much. Again I prefer to not touch scripting or at least call them if current environment supports that.</p>
</blockquote>
</aside>
<p>Then can’t get the theme information from the window manager then.</p>
<aside class="quote no-group" data-username="Eiji" data-post="30" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>We have some misunderstanding. You talked about special cases which are possible to only one specified window manager and which are hard to reimplement. From this I though that every part I described looks really hard to implement for you, but you talked about edge cases like scripting.</p>
</blockquote>
</aside>
<p>Static Shadows are super easy, dynamic shadows require more information.  I even had shadows on Windows XP ~18 years ago where the shadows shone ‘away’ from the mouse cursor like my wife’s computer does right now (<em>not</em> light on the CPU back then,  ^.^;).</p>
<aside class="quote no-group" data-username="Eiji" data-post="30" data-topic="19983">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>I’m not sure - depends on implementation. Maybe this tool allows to read color and mix it with its own. I don’t know, but yeah such cases are definitely too more to handle manually.</p>
</blockquote>
</aside>
<p>But what color?  Like how would you render a shadow in your program if the window manager itself projects a shadow from the cursor that takes the coloring of the widgets/components that the light interacts with.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="115729" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/how-about-crowdfunding-for-scenic-based-libraries-projects/19983/31">Post #30</a>
	                </div>
	            </div>
              <div id="likers-container-115729" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="115729"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #30"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/19983/load_more?page=4">Load more posts (14 remaining)</a>
</div></template></turbo-stream>