<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: codesharedot</title>
    <description>The latest articles on DEV Community by codesharedot (@codesharedot).</description>
    <link>https://dev.to/codesharedot</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F223126%2F5019ad82-0350-4f84-ab94-8e80fa1f99f4.png</url>
      <title>DEV Community: codesharedot</title>
      <link>https://dev.to/codesharedot</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/codesharedot"/>
    <language>en</language>
    <item>
      <title>Trying out KDE</title>
      <dc:creator>codesharedot</dc:creator>
      <pubDate>Wed, 06 Nov 2019 21:16:48 +0000</pubDate>
      <link>https://dev.to/codesharedot/trying-out-kde-2802</link>
      <guid>https://dev.to/codesharedot/trying-out-kde-2802</guid>
      <description>&lt;p&gt;Trying out the KDE Plasma desktop. Compared to the earlier KDE versions it's improved a lot.&lt;/p&gt;

&lt;p&gt;The search menu that's in the start menu is very good. Any modern desktop or window manager doesn't work well without a good search option.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--h2kWMyBl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://external-content.duckduckgo.com/iu/%3Fu%3Dhttps%253A%252F%252Fiwf1.com%252Fwordpress%252Fwp-content%252Fuploads%252F2014%252F07%252FKDE-4-Plasma-5-looks.jpg%26f%3D1%26nofb%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--h2kWMyBl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://external-content.duckduckgo.com/iu/%3Fu%3Dhttps%253A%252F%252Fiwf1.com%252Fwordpress%252Fwp-content%252Fuploads%252F2014%252F07%252FKDE-4-Plasma-5-looks.jpg%26f%3D1%26nofb%3D1" alt="kde plasma"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Compared to LxQt the feel is quite similar. It just has more features than LxQt. There's a demo of the KDE plasma desktop here:&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/fzuylNzpZIw"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Install KDE
&lt;/h2&gt;

&lt;p&gt;If you want to try it out, you can install Kubuntu (an ubuntu variant) or install it from the terminal&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;    &lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;tasksel
    &lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;tasksel &lt;span class="nb"&gt;install &lt;/span&gt;kubuntu-desktop
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;That's it, now logout and login again.&lt;/p&gt;

&lt;h2&gt;
  
  
  UX
&lt;/h2&gt;

&lt;p&gt;Overall it does the job, not a fan of the Konsole, so switched over to another terminal emulator. The konsole looks like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--a-X7OZZl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://external-content.duckduckgo.com/iu/%3Fu%3Dhttps%253A%252F%252Fkonsole.kde.org%252Fassets%252Fimg%252Fkonsoletabs.png%26f%3D1%26nofb%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--a-X7OZZl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://external-content.duckduckgo.com/iu/%3Fu%3Dhttps%253A%252F%252Fkonsole.kde.org%252Fassets%252Fimg%252Fkonsoletabs.png%26f%3D1%26nofb%3D1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;well, I prefer somethign like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gYHrJs6T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://external-content.duckduckgo.com/iu/%3Fu%3Dhttps%253A%252F%252Fgnunn1.github.io%252Ftilix-web%252Fassets%252Fimages%252Fgallery%252Ftilix-screenshot-2.png%26f%3D1%26nofb%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gYHrJs6T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://external-content.duckduckgo.com/iu/%3Fu%3Dhttps%253A%252F%252Fgnunn1.github.io%252Ftilix-web%252Fassets%252Fimages%252Fgallery%252Ftilix-screenshot-2.png%26f%3D1%26nofb%3D1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But as for the desktop, doesn't matter much.&lt;/p&gt;

&lt;p&gt;The memory usag is quite low, 256MB memory use. In an age where you can easily get a few gigs of memory, that's nothing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Related links:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kde.org/"&gt;KDE desktop&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kubuntu.org/"&gt;Kubuntu Linux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://linuxtoko.com/best-linux-for-beginner/"&gt;New to Linux?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>linux</category>
      <category>ubuntu</category>
      <category>kde</category>
    </item>
    <item>
      <title>Little Linux Flashback (90s)</title>
      <dc:creator>codesharedot</dc:creator>
      <pubDate>Mon, 04 Nov 2019 22:32:21 +0000</pubDate>
      <link>https://dev.to/codesharedot/little-linux-flashback-90s-27mg</link>
      <guid>https://dev.to/codesharedot/little-linux-flashback-90s-27mg</guid>
      <description>&lt;p&gt;I started using Linux over 15 years ago. The Linux system (Most often use the terms Linux distributions, because technically Linux is only the kernel) experience has changed a lot over the years.&lt;/p&gt;

&lt;p&gt;To give you some perspective, we used these type of computers:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jQoa6w_p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://external-content.duckduckgo.com/iu/%3Fu%3Dhttps%253A%252F%252Fs-media-cache-ak0.pinimg.com%252F736x%252Fdf%252F5d%252F14%252Fdf5d14bad72dcb8dde2841a4d59fca4b.jpg%26f%3D1%26nofb%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jQoa6w_p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://external-content.duckduckgo.com/iu/%3Fu%3Dhttps%253A%252F%252Fs-media-cache-ak0.pinimg.com%252F736x%252Fdf%252F5d%252F14%252Fdf5d14bad72dcb8dde2841a4d59fca4b.jpg%26f%3D1%26nofb%3D1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This was in a time, when Linux did not have any USB support, no wireless network support. You'd plugin the CD (if you had one), and end up in a terminal like this (Slackware Linux):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OvWxEmKn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://external-content.duckduckgo.com/iu/%3Fu%3Dhttps%253A%252F%252Fwww.howtogeek.com%252Fwp-content%252Fuploads%252F2014%252F06%252Fxslackware-setup.png.pagespeed.gp%252Bjp%252Bjw%252Bpj%252Bws%252Bjs%252Brj%252Brp%252Brw%252Bri%252Bcp%252Bmd.ic.jKGBv6lLvj.png%26f%3D1%26nofb%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OvWxEmKn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://external-content.duckduckgo.com/iu/%3Fu%3Dhttps%253A%252F%252Fwww.howtogeek.com%252Fwp-content%252Fuploads%252F2014%252F06%252Fxslackware-setup.png.pagespeed.gp%252Bjp%252Bjw%252Bpj%252Bws%252Bjs%252Brj%252Brp%252Brw%252Bri%252Bcp%252Bmd.ic.jKGBv6lLvj.png%26f%3D1%26nofb%3D1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Configuration drama
&lt;/h2&gt;

&lt;p&gt;Then after installing, you'd find out you are still in a terminal. You had to configure this thing called X. You'd run the command &lt;a href="https://en.wikipedia.org/wiki/XF86Config"&gt;xf86config&lt;/a&gt;, with which you could configure your graphical settings (screen resolution et al).&lt;/p&gt;

&lt;p&gt;But, after doing this, it still would not work. Then you'd run this command many times over trying to get the right settings. After that finally worked (day later), you'd feel happy.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HKL68glw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://upload.wikimedia.org/wikipedia/commons/thumb/9/94/GNOME_1.0_%25281999%252C_03%2529_with_GNOME_Panel_1_and_File_Manager.png/915px-GNOME_1.0_%25281999%252C_03%2529_with_GNOME_Panel_1_and_File_Manager.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HKL68glw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://upload.wikimedia.org/wikipedia/commons/thumb/9/94/GNOME_1.0_%25281999%252C_03%2529_with_GNOME_Panel_1_and_File_Manager.png/915px-GNOME_1.0_%25281999%252C_03%2529_with_GNOME_Panel_1_and_File_Manager.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  More trouble ahead
&lt;/h2&gt;

&lt;p&gt;Then you'd end up with an antique Gnome desktop. But now, the sound card doesn't work. Again, you spend many hours trying to figure out how that works. Now you have to compile the kernel to include the sound card driver, oh dear.&lt;/p&gt;

&lt;p&gt;What's that, you want wireless support? Get ready to compile the kernel yet again! If you are lucky, it won't show the message &lt;code&gt;Kernel Panic&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MDak3dO2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://external-content.duckduckgo.com/iu/%3Fu%3Dhttps%253A%252F%252Fmedia.giphy.com%252Fmedia%252F3o6MblMs93tlc151fO%252Fgiphy.gif%26f%3D1%26nofb%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MDak3dO2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://external-content.duckduckgo.com/iu/%3Fu%3Dhttps%253A%252F%252Fmedia.giphy.com%252Fmedia%252F3o6MblMs93tlc151fO%252Fgiphy.gif%26f%3D1%26nofb%3D1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Modern day Linux
&lt;/h2&gt;

&lt;p&gt;The modern day Linux distribution is much smoother! For most modern Linux distributions, everything works out of the box, including the desktop environment, all the drivers and everything else.&lt;/p&gt;

&lt;p&gt;The only trouble I've run into is this "Secure Boot / UEFI" stuff. But that can easily be solved.&lt;/p&gt;

&lt;p&gt;You can easily end up with a desktop like this (or any of the others like Gnome, KDE)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PjjofU90--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://external-content.duckduckgo.com/iu/%3Fu%3Dhttps%253A%252F%252F4.bp.blogspot.com%252F-gLCdYCvTzY0%252FV1_kYZM6BII%252FAAAAAAAAX8c%252FGKf7NBAjD5oH3uM8sO0SkOUiPQiw7PPJgCLcB%252Fs1600%252Felementaryos-04-loki.png%26f%3D1%26nofb%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PjjofU90--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://external-content.duckduckgo.com/iu/%3Fu%3Dhttps%253A%252F%252F4.bp.blogspot.com%252F-gLCdYCvTzY0%252FV1_kYZM6BII%252FAAAAAAAAX8c%252FGKf7NBAjD5oH3uM8sO0SkOUiPQiw7PPJgCLcB%252Fs1600%252Felementaryos-04-loki.png%26f%3D1%26nofb%3D1" alt="elementary os linux"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What's your Linux experience been Like? Is this the year of the Linux desktop? :P&lt;/p&gt;

&lt;p&gt;Some more Linux links stuff:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.distrowatch.com/"&gt;Distrowatch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ubuntu.com/"&gt;Ubuntu, a popular Linux distro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://linuxtoko.com/best-linux-for-beginner/"&gt;Best distros for beginner&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>linux</category>
      <category>computers</category>
    </item>
    <item>
      <title>What do you automate in your life and work?</title>
      <dc:creator>codesharedot</dc:creator>
      <pubDate>Mon, 28 Oct 2019 10:12:04 +0000</pubDate>
      <link>https://dev.to/codesharedot/what-do-you-automate-in-your-life-and-work-15f6</link>
      <guid>https://dev.to/codesharedot/what-do-you-automate-in-your-life-and-work-15f6</guid>
      <description>&lt;p&gt;What do you automate in your life and work?&lt;/p&gt;

&lt;p&gt;I've setup birthday reminders, for birthday reminders I use simple email calendar notifications instead of cronjob.&lt;/p&gt;

&lt;p&gt;Using Zsh over bash, as tab competion and searching commands much easier. &lt;/p&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>Best Python framework for building a desktop application and GUI</title>
      <dc:creator>codesharedot</dc:creator>
      <pubDate>Fri, 25 Oct 2019 15:17:04 +0000</pubDate>
      <link>https://dev.to/codesharedot/best-python-framework-for-building-a-desktop-application-and-gui-58n5</link>
      <guid>https://dev.to/codesharedot/best-python-framework-for-building-a-desktop-application-and-gui-58n5</guid>
      <description>&lt;p&gt;Python has been the most trending programming language used for object oriented progamming. With python you can run simple statement over and over again without having  to compile a whole program of which it's output functionality is superb. &lt;/p&gt;

&lt;p&gt;Of course, Python is an interactive programming which has a diverse range of options for GUI (Graphical User Interface) framework (help developers create GUI applications in an easy and secure manner). This article discusses the Best Python framework for building a desktop application and GUI.&lt;/p&gt;

&lt;p&gt;NB: It is essential that you have a &lt;a href="https://pythonbasics.org" rel="noopener noreferrer"&gt;basic knowledge of Python programming language&lt;/a&gt; before you can use these python frameworks.&lt;/p&gt;

&lt;p&gt;Let's delve it to the discus &lt;/p&gt;

&lt;h2&gt;
  
  
  PyQT
&lt;/h2&gt;

&lt;p&gt;PyQt is a Graphical User Interface widget toolkit. It is one of the most powerful and popular Python interfaces. It is a combination of the Qt (owned by Nokia) library and Python programming language which leaves a developer to decide whether to create a program by coding or create visual dialogs using Qt Designer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fexternal-content.duckduckgo.com%2Fiu%2F%3Fu%3Dhttps%253A%252F%252Fi.stack.imgur.com%252FhB9Gf.png%26f%3D1%26nofb%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fexternal-content.duckduckgo.com%2Fiu%2F%3Fu%3Dhttps%253A%252F%252Fi.stack.imgur.com%252FhB9Gf.png%26f%3D1%26nofb%3D1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;PyQt is a free Python bindings software open-source widget-toolkit Qt, implemented for cross-platform application development framework. In the free version, certain features may not be available but if your application is open source then you can use it under a free license.&lt;/p&gt;

&lt;p&gt;PyQt is available on Windows, MacOSX, Linux, Android iOS and Raspberry Pi and different python versions ranging from v2 to Qt v5.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://pythonbasics.org/pyqt/" rel="noopener noreferrer"&gt;Python PyQt tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pythonprogramminglanguage.com/pyqt-tutorials" rel="noopener noreferrer"&gt;Another PyQt tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gum.co/pysqtsamples" rel="noopener noreferrer"&gt;Course: PyQt apps with Python&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tkinter
&lt;/h2&gt;

&lt;p&gt;Tkinter is the most popular programming package for graphical user interface or desktop apps. It is so named because of its simplicity. Tkinter is the combination of Tk and Python's standard GUI framework. &lt;/p&gt;

&lt;p&gt;TKinter comes with an abundance of resources of codes and reference books which is the major merit of choosing it as a package. It provides diverse widgets, such as labels, buttons, and text boxes used in a graphical user interface application. The Button control also called widgets are used to display buttons in developed application while the Canvas widget is used to draw shapes (lines, ovals, polygon...) in your application.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fexternal-content.duckduckgo.com%2Fiu%2F%3Fu%3Dhttps%253A%252F%252Fi.stack.imgur.com%252FQdbsi.png%26f%3D1%26nofb%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fexternal-content.duckduckgo.com%2Fiu%2F%3Fu%3Dhttps%253A%252F%252Fi.stack.imgur.com%252FQdbsi.png%26f%3D1%26nofb%3D1" alt="tkinter"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is easy to get help when you come across a hurdle in the course of developing your application since Tkinter has thousands of users because it has been in use for a very long time. Tkinter is an open source and it is available under the Python License.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://pythonbasics.org/tkinter/" rel="noopener noreferrer"&gt;Tkinter tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gum.co/ErLc" rel="noopener noreferrer"&gt;Course: Tkinter Desktop Apps&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Kivy
&lt;/h2&gt;

&lt;p&gt;Kivy as an OpenGL ES 2 accelerated framework for the creation of new user interfaces empowers you with the ease to write your code once and have it run on different platforms or Operating Systems (Windows, MacOSX, Linux, Android iOS and Raspberry Pi). &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fexternal-content.duckduckgo.com%2Fiu%2F%3Fu%3Dhttps%253A%252F%252Fi.stack.imgur.com%252Fy6Hmq.png%26f%3D1%26nofb%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fexternal-content.duckduckgo.com%2Fiu%2F%3Fu%3Dhttps%253A%252F%252Fi.stack.imgur.com%252Fy6Hmq.png%26f%3D1%26nofb%3D1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Kivy apps creation is fun, easy and rewarding because it is free and is an open source Python library for creating application software with an enabled natural user interface . Kivy comes twenty widgets in its toolkit.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kivy.org/#home" rel="noopener noreferrer"&gt;Python kivy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  WxPython
&lt;/h2&gt;

&lt;p&gt;WxPython is a python extension module. It is also an open source wrapper for cross-platform graphical user interface library Widget. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fexternal-content.duckduckgo.com%2Fiu%2F%3Fu%3Dhttp%253A%252F%252Fwxglade.sourceforge.net%252Fimg%252Fwxglade_session.png%26f%3D1%26nofb%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fexternal-content.duckduckgo.com%2Fiu%2F%3Fu%3Dhttp%253A%252F%252Fwxglade.sourceforge.net%252Fimg%252Fwxglade_session.png%26f%3D1%26nofb%3D1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As a developer, you can develop traditional applications for Windows, Unix and Mac OS.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://pythonspot.com/wxpython-window/" rel="noopener noreferrer"&gt;wxPython tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.wxpython.org/" rel="noopener noreferrer"&gt;WxPython&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  PyGUI
&lt;/h2&gt;

&lt;p&gt;PyGUI is the simplest and most lightweight of all GUIs because it is purely in sync with Python programming language. It is a cross-platform graphical application framework for Windows, Mac OS, and Unix.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fexternal-content.duckduckgo.com%2Fiu%2F%3Fu%3Dhttp%253A%252F%252Fwww.cosc.canterbury.ac.nz%252Fgreg.ewing%252Fpython_gui%252FScreenshots%252FCocoa%252FControls_Screen.png%26f%3D1%26nofb%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fexternal-content.duckduckgo.com%2Fiu%2F%3Fu%3Dhttp%253A%252F%252Fwww.cosc.canterbury.ac.nz%252Fgreg.ewing%252Fpython_gui%252FScreenshots%252FCocoa%252FControls_Screen.png%26f%3D1%26nofb%3D1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A PyGUI developer inserts very less code between the GUI platform and Python application which in turn displays the natural GUI of the platform.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.cosc.canterbury.ac.nz/greg.ewing/python_gui/" rel="noopener noreferrer"&gt;PyGui tutorial&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;The above listed are the most widely used and best Python graphical user interface frameworks available. It's up to the developer to choose the Python GUI framework that best suits him/her.&lt;/p&gt;

</description>
      <category>python</category>
      <category>desktop</category>
    </item>
    <item>
      <title>Bitcoin price with Ruby</title>
      <dc:creator>codesharedot</dc:creator>
      <pubDate>Thu, 24 Oct 2019 20:55:55 +0000</pubDate>
      <link>https://dev.to/codesharedot/bitcoin-price-with-ruby-479e</link>
      <guid>https://dev.to/codesharedot/bitcoin-price-with-ruby-479e</guid>
      <description>&lt;p&gt;We aren't talking about the value of a Ruby or a get rich quick talk. No, we are talking about the &lt;a href="https://www.ruby-lang.org/en/"&gt;programming language Ruby&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Getting the bitcoin price is one the simpelest program you can make, while still having a meaning (beyond "Hello World")&lt;/p&gt;

&lt;p&gt;How can we do that with Ruby? &lt;/p&gt;

&lt;h2&gt;
  
  
  Get price with Ruby
&lt;/h2&gt;

&lt;p&gt;The first step is to import some modules, or as ruby calls them gems.&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/usr/bin/ruby
require 'rubygems'
require 'json'
require 'pp'
require 'open-uri'
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Data is retreived from an API. We use an API to download data. In this example we download the bitcoin price. &lt;/p&gt;

&lt;p&gt;Data is presetend to the computer in some way. Sometimes its XML Format, sometimes JSON, sometimes something else.&lt;/p&gt;

&lt;p&gt;I like the JSON format personally, because it's so simple.&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;obj = JSON.load(open("https://api.coinmarketcap.com/v1/ticker/bitcoin/"))
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Then it returns the JSON data, something like this&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[{"id"=&amp;gt;"bitcoin",
  "name"=&amp;gt;"Bitcoin",
  "symbol"=&amp;gt;"BTC",
  "rank"=&amp;gt;"1",
  "price_usd"=&amp;gt;"7511.40312364",
  "price_btc"=&amp;gt;"1.0",
  "24h_volume_usd"=&amp;gt;"16880618621.5",
  "market_cap_usd"=&amp;gt;"135289661862",
  "available_supply"=&amp;gt;"18011237.0",
  "total_supply"=&amp;gt;"18011237.0",
  "max_supply"=&amp;gt;"21000000.0",
  "percent_change_1h"=&amp;gt;"0.05",
  "percent_change_24h"=&amp;gt;"-0.26",
  "percent_change_7d"=&amp;gt;"-7.3",
  "last_updated"=&amp;gt;"1571949454"}]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;So we need to get the price (prie_usd). The price has micro cents, mili cents, nano cents and so on. This has no real world meaning, so we round the number after converting it to a floating point number..&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;val = obj[0]["price_usd"].to_f.round(2)
puts "$ #{val}"
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Thats it&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Related links&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ruby-lang.co/"&gt;Ruby programming tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coinmarketcap.com"&gt;Cryptocurrency data&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ruby</category>
      <category>programming</category>
    </item>
    <item>
      <title>Linux security</title>
      <dc:creator>codesharedot</dc:creator>
      <pubDate>Wed, 23 Oct 2019 16:58:11 +0000</pubDate>
      <link>https://dev.to/codesharedot/linux-security-1g44</link>
      <guid>https://dev.to/codesharedot/linux-security-1g44</guid>
      <description>&lt;p&gt;There are many softwares to secure your Linux box. You may think you are immune from bad malware, virus, actors. Well, nothing coul be further from the truth. So what can you do? Use some softwares to secure your box:&lt;/p&gt;

&lt;h2&gt;
  
  
  AppArmor / SELinux
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://linuxtoko.com/app-armor/" rel="noopener noreferrer"&gt;AppArmor / SeLinux&lt;/a&gt; tools let you harden your system to the file system level (And beyond). Which apps can access what directories, which app can access the internet and so on.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fexternal-content.duckduckgo.com%2Fiu%2F%3Fu%3Dhttp%253A%252F%252Fgetintopc.com%252Fwp-content%252Fuploads%252F2014%252F03%252FSUSE-Linux-Free.jpg%26f%3D1%26nofb%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fexternal-content.duckduckgo.com%2Fiu%2F%3Fu%3Dhttp%253A%252F%252Fgetintopc.com%252Fwp-content%252Fuploads%252F2014%252F03%252FSUSE-Linux-Free.jpg%26f%3D1%26nofb%3D1" alt="apparmor"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ClamAV
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.clamav.net/" rel="noopener noreferrer"&gt;ClamAV AntiVirus&lt;/a&gt; is a free, cross-platform and open-source antivirus software toolkit able to detect many types of malicious software, including viruses. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fexternal-content.duckduckgo.com%2Fiu%2F%3Fu%3Dhttp%253A%252F%252F4.bp.blogspot.com%252F-1_xXEnvOLYQ%252FTuwZ6edxOzI%252FAAAAAAAAACY%252Fmz3gePdedmw%252Fs320%252FClamtk.jpg%26f%3D1%26nofb%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fexternal-content.duckduckgo.com%2Fiu%2F%3Fu%3Dhttp%253A%252F%252F4.bp.blogspot.com%252F-1_xXEnvOLYQ%252FTuwZ6edxOzI%252FAAAAAAAAACY%252Fmz3gePdedmw%252Fs320%252FClamtk.jpg%26f%3D1%26nofb%3D1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Firejail
&lt;/h2&gt;

&lt;p&gt;A tool to sandbox your apps. This is more "lightweight" than AppArmor. By runnning in a sandbox, the app can't do bad things outside of what it's supposed to do. Especially useful for web browsers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Firewalls
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;UFW&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The UFW firewall can block access based on port. If you want to block certain ports (like SSH), you can with UFW. It doesn't allow per-application blocking, only port based blocking.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fexternal-content.duckduckgo.com%2Fiu%2F%3Fu%3Dhttps%253A%252F%252Fwww.ubuntupit.com%252Fwp-content%252Fuploads%252F2018%252F07%252FUFW-%2525E2%252580%252593-Uncomplicated-Firewall.jpg%26f%3D1%26nofb%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fexternal-content.duckduckgo.com%2Fiu%2F%3Fu%3Dhttps%253A%252F%252Fwww.ubuntupit.com%252Fwp-content%252Fuploads%252F2018%252F07%252FUFW-%2525E2%252580%252593-Uncomplicated-Firewall.jpg%26f%3D1%26nofb%3D1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OpenSnitch&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Just an application firewall. If an app tries to access the internet, you'll get a popup asking if it's ok to access the internet&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fexternal-content.duckduckgo.com%2Fiu%2F%3Fu%3Dhttps%253A%252F%252F1.bp.blogspot.com%252F-91giTlOwHL8%252FWth-0YTJkaI%252FAAAAAAAAAO4%252FB8Y-FWbelIExZCQtN8g3Tu_LRn26cpXTQCLcBGAs%252Fs1600%252Fopensnitch-allow-firefox.png%26f%3D1%26nofb%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fexternal-content.duckduckgo.com%2Fiu%2F%3Fu%3Dhttps%253A%252F%252F1.bp.blogspot.com%252F-91giTlOwHL8%252FWth-0YTJkaI%252FAAAAAAAAAO4%252FB8Y-FWbelIExZCQtN8g3Tu_LRn26cpXTQCLcBGAs%252Fs1600%252Fopensnitch-allow-firefox.png%26f%3D1%26nofb%3D1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So what do you use? :)&lt;/p&gt;

</description>
      <category>linux</category>
      <category>ubuntu</category>
      <category>security</category>
      <category>suse</category>
    </item>
    <item>
      <title>Cat facts with Python and API</title>
      <dc:creator>codesharedot</dc:creator>
      <pubDate>Mon, 21 Oct 2019 21:19:55 +0000</pubDate>
      <link>https://dev.to/codesharedot/cat-facts-with-python-and-api-5ec1</link>
      <guid>https://dev.to/codesharedot/cat-facts-with-python-and-api-5ec1</guid>
      <description>&lt;p&gt;Did you know you can get cat facts with Python?&lt;/p&gt;

&lt;p&gt;There's a &lt;a href="https://alexwohlbruck.github.io/cat-facts/docs/"&gt;API for cat facts&lt;/a&gt;. Yes, really :)&lt;/p&gt;

&lt;p&gt;An API lets you get data, it's a "data provider". They are used in almost every web app. This lets you practice with APIs and Python.&lt;/p&gt;

&lt;p&gt;It has two end points&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;URL&lt;/th&gt;
&lt;th&gt;what&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;/facts&lt;/td&gt;
&lt;td&gt;Retrieve and query facts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/users*&lt;/td&gt;
&lt;td&gt;Get user data&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If you open the url &lt;a href="https://cat-fact.herokuapp.com/facts"&gt;&lt;/a&gt;&lt;a href="https://cat-fact.herokuapp.com/facts"&gt;https://cat-fact.herokuapp.com/facts&lt;/a&gt; you get all the facts in JSON data. An id would give only a single object.&lt;/p&gt;

&lt;p&gt;So how to use that in Python?&lt;/p&gt;

&lt;p&gt;This little program with requests will do it:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/usr/bin/python3
#_*_coding: utf-8_*_
import time
import json
import requests

data = requests.get('https://cat- fact.herokuapp.com/facts/58e0086f0aac31001185ed02')
print(data.json())
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--l81hscSt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://external-content.duckduckgo.com/iu/%3Fu%3Dhttps%253A%252F%252Fpeopledotcom.files.wordpress.com%252F2017%252F08%252Fcat-meme-2.jpg%26f%3D1%26nofb%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--l81hscSt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://external-content.duckduckgo.com/iu/%3Fu%3Dhttps%253A%252F%252Fpeopledotcom.files.wordpress.com%252F2017%252F08%252Fcat-meme-2.jpg%26f%3D1%26nofb%3D1" alt="cat fact"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Get cat fact
&lt;/h2&gt;

&lt;p&gt;What if you want only one fact?&lt;/p&gt;

&lt;p&gt;You can add the id like this:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;data = requests.get('https://cat-fact.herokuapp.com/facts/58e0086f0aac31001185ed02')
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Then use the text attribute (see inside json object) to get the fact&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/usr/bin/python3
#_*_coding: utf-8_*_
import time
import json
import requests

data = requests.get('https://cat- 
fact.herokuapp.com/facts/58e0086f0aac31001185ed02')
print(data.json()['text'])
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;This is how you can interact with the API. Try it out on your own :)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Resources:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://pythonbasics.org/"&gt;Learn Python Programming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pythonbasics.org/json/"&gt;More on JSON&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://alexwohlbruck.github.io/cat-facts/docs/"&gt;API with data about cats&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>python</category>
      <category>programming</category>
    </item>
    <item>
      <title>Gnome memory monitor extension</title>
      <dc:creator>codesharedot</dc:creator>
      <pubDate>Sun, 13 Oct 2019 18:42:54 +0000</pubDate>
      <link>https://dev.to/codesharedot/gnome-memory-monitor-extension-5cic</link>
      <guid>https://dev.to/codesharedot/gnome-memory-monitor-extension-5cic</guid>
      <description>&lt;p&gt;You can use Python to create a gnome extension that shows memory use. (Gnome is quite a memory eater). &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KD2RaqIS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/oceh7n7v33haeymfn0cu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KD2RaqIS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/oceh7n7v33haeymfn0cu.png" alt="top bar"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;See that little memory icon with the percentage use? That's what we'll build.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you have the memory problem with gnome, &lt;em&gt;the lazy fix for this is not to tweak gnome, but to add a more ram memory.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;To create gnome extensions in Python, you can use argos. An extension that lets you use Python to create your extension&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LbSKLdSn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://proxy.duckduckgo.com/iu/%3Fu%3Dhttp%253A%252F%252F2.bp.blogspot.com%252F_7G6ciJUMuAk%252FTGOQMOWsMGI%252FAAAAAAAABZU%252F_K91q5OU6hw%252Fs1600%252Fyo%252Bdawg%252B31.jpg%26f%3D1%26nofb%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LbSKLdSn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://proxy.duckduckgo.com/iu/%3Fu%3Dhttp%253A%252F%252F2.bp.blogspot.com%252F_7G6ciJUMuAk%252FTGOQMOWsMGI%252FAAAAAAAABZU%252F_K91q5OU6hw%252Fs1600%252Fyo%252Bdawg%252B31.jpg%26f%3D1%26nofb%3D1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So first install the &lt;a href="https://github.com/p-e-w/argos"&gt;argos extension&lt;/a&gt; and enable it in gnome-tweak-tool. This extension is in the default ubuntu repo.&lt;/p&gt;

&lt;p&gt;The extension can be refreshed, by setting the filename&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ram.3s+.py
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;would referesh every 3 seconds.&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ram.6s+.py
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;would refresh every 6 seconds.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enter the matrix
&lt;/h2&gt;

&lt;p&gt;Now we type a few lines of Python. The module psutil can give you the current memory use. &lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/usr/bin/python
import os
import psutil

print( str(psutil.virtual_memory()[2]) + "% | iconName=gnome-dev- memory")
print("---")
print("Use: " + str(psutil.virtual_memory()[2]) + "%")
print("---")
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Save it in ~/.config/argos&lt;/p&gt;

&lt;p&gt;Make sure to&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;chmod +x your_script.py
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Then it will show the memory right in your top bar! :D&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KD2RaqIS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/oceh7n7v33haeymfn0cu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KD2RaqIS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/oceh7n7v33haeymfn0cu.png" alt="top bar"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Resources:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/p-e-w/argos"&gt;Argos Gnome extension&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pythonbasics.org"&gt;Learn Python programming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/GNOME"&gt;About Gnome desktop&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>python</category>
      <category>gnome</category>
      <category>linux</category>
      <category>ubuntu</category>
    </item>
    <item>
      <title>Bitcoin price ticker in Gnome desktop</title>
      <dc:creator>codesharedot</dc:creator>
      <pubDate>Sun, 13 Oct 2019 17:16:13 +0000</pubDate>
      <link>https://dev.to/codesharedot/bitcoin-price-ticker-in-gnome-desktop-4ppc</link>
      <guid>https://dev.to/codesharedot/bitcoin-price-ticker-in-gnome-desktop-4ppc</guid>
      <description>&lt;p&gt;Linux is very extensible. You can change almost anything in the system. Are you using the gnome desktop and interested in crypto?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--a4xMjGFh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://proxy.duckduckgo.com/iu/%3Fu%3Dhttps%253A%252F%252Fzdnet2.cbsistatic.com%252Fhub%252Fi%252Fr%252F2017%252F04%252F05%252F57e3026e-94a0-4eb3-a602-30f40d2b60a8%252Fresize%252F770xauto%252F562a1edcfdbd07cf220a7b0053e7c1a1%252Fubuntu-unity.jpg%26f%3D1%26nofb%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--a4xMjGFh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://proxy.duckduckgo.com/iu/%3Fu%3Dhttps%253A%252F%252Fzdnet2.cbsistatic.com%252Fhub%252Fi%252Fr%252F2017%252F04%252F05%252F57e3026e-94a0-4eb3-a602-30f40d2b60a8%252Fresize%252F770xauto%252F562a1edcfdbd07cf220a7b0053e7c1a1%252Fubuntu-unity.jpg%26f%3D1%26nofb%3D1" alt="gnome desktop"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Why Gnome? Gnome is the default desktop on &lt;a href="https://ubuntu.com"&gt;Ubuntu&lt;/a&gt;, &lt;a href="https://debian.org"&gt;Debian&lt;/a&gt;, &lt;a href="https://opensuse.org"&gt;OpenSUSE&lt;/a&gt; and others.&lt;/p&gt;

&lt;p&gt;You can create a gnome extension with argos, using &lt;a href="http://pythonbasics.org"&gt;Python&lt;/a&gt;. You can create a price ticket for bitcoin. But with a price ticker, it needs to update automatically.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9-xmWNhM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/b1b9cedbkdgu97r9otry.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9-xmWNhM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/b1b9cedbkdgu97r9otry.png" alt="gnome extension"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;How do you do that? &lt;/p&gt;

&lt;p&gt;You can name the file like this:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NAME.POSITION.TIME.EXTENSION
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;For instance&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;hello.1r.60s.py
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Argos will rerun the plugin every 60 seconds.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get price
&lt;/h2&gt;

&lt;p&gt;To get the price, you can use the requests module and parse JSON data. There are many APIs available for the bitcoin price like kraken, bitstamp and others. We'll use coinmarketcap&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/usr/bin/env python

import re
from gi.repository import Gio
from datetime import datetime

import time
import json
import requests

def coin():
    data = requests.get('https://api.coinmarketcap.com/v1/ticker/bitcoin/')
    price = data.json()[0]['price_usd']
    btc_price = float(("{0:.2f}").format(float(price))) 
    return btc_price

usd = float(coin())
lastupdate = datetime.now().strftime('%H:%M:%S')

#print("Bitcoin $" + str(usd) + " (" + str(lastupdate) + ") | n 
#iconName=invest-applet")
print("Bitcoin $" + str(usd) + " | iconName=invest-applet")
print("---")
#print("Kraken: $" + str(usd) + " | iconName=gedit bash=gedit  terminal=false")
print("---")
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Now save it as bitcoin.1r.60s.py and it will update the price every 60 seconds. There's a lastupdate variable in the code which you can use, or fork it to create your own clock :P&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Resources:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://extensions.gnome.org/extension/1176/argos/"&gt;Gnome argos plugin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/p-e-w/argos"&gt;Argos documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pythonbasics.org"&gt;Learn Python programming&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>python</category>
      <category>bitcoin</category>
      <category>gnome</category>
    </item>
    <item>
      <title>Gnome plugin with Python</title>
      <dc:creator>codesharedot</dc:creator>
      <pubDate>Fri, 11 Oct 2019 21:11:17 +0000</pubDate>
      <link>https://dev.to/codesharedot/gnome-plugin-with-python-3n58</link>
      <guid>https://dev.to/codesharedot/gnome-plugin-with-python-3n58</guid>
      <description>&lt;p&gt;You can create Gnome 3.x plugins straight from Python. Of course, you should know &lt;a href="https://pythonbasics.org/"&gt;Python programming&lt;/a&gt;. It's not that hard to do.   Great! how do you create a plugin?&lt;/p&gt;

&lt;p&gt;Do you use/like Gnome desktop?  It's the default desktop on many Linux distros like &lt;a href="https://ubuntu.com/"&gt;Ubuntu&lt;/a&gt;, &lt;a href="https://www.debian.org/"&gt;Debian&lt;/a&gt;, &lt;a href="https://www.opensuse.org/"&gt;OpenSuse&lt;/a&gt; and others.&lt;/p&gt;

&lt;p&gt;It's this one:&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/mbswQVfcl1A"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  The setup
&lt;/h2&gt;

&lt;p&gt;It takes some setup before you can run Python script on the gnome desktop. I've tested this on then newest gnome desktop, it may not work for classic gnome desktop (mate).&lt;/p&gt;

&lt;p&gt;Setup &lt;a href="https://extensions.gnome.org/extension/1176/argos/"&gt;the argos plugin&lt;/a&gt; and enable it using &lt;em&gt;gnome tweak tool&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yHgiM54k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://proxy.duckduckgo.com/iu/%3Fu%3Dhttps%253A%252F%252Fwww.linuxtechi.com%252Fwp-content%252Fuploads%252F2018%252F04%252FGnome-Tweak-Tool-Ubuntu18-04-1024x579.jpg%26f%3D1%26nofb%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yHgiM54k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://proxy.duckduckgo.com/iu/%3Fu%3Dhttps%253A%252F%252Fwww.linuxtechi.com%252Fwp-content%252Fuploads%252F2018%252F04%252FGnome-Tweak-Tool-Ubuntu18-04-1024x579.jpg%26f%3D1%26nofb%3D1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click extensions and enable argos. If you don't have tweak tool, run this command&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt install gnome-tweak-tool
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  Create the gnome plugin
&lt;/h2&gt;

&lt;p&gt;Then open a terminal (Ctrl+Alt+T) and type this&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd ~/.config/argos
nano launcher.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;or any other editor.&lt;br&gt;
Paste the Python code below.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/usr/bin/env python

import re
from gi.repository import Gio

print("Python | iconName=starred") 
print("---")
print("Gedit | iconName=gedit bash=gedit terminal=false")
print("Nautilus | iconName=system-file-manager bash=nautilus terminal=false")
print("---")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Save and close. Then type&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;chmod +x launcher.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;You should now see the Python script output in your tool bar. The plugin argos will scan the directory &lt;strong&gt;~/.config/argos&lt;/strong&gt; constantly for changes.&lt;br&gt;
Any file you place in there is a plugin.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HswlFv2M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ebltymi4bsdq0d4okuie.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HswlFv2M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ebltymi4bsdq0d4okuie.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Related links&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://pythonbasics.org"&gt;Learn Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://extensions.gnome.org/extension/1176/argos/"&gt;The Argos plugin&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://ubuntu.com/"&gt;Ubuntu Linux&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>python</category>
      <category>linux</category>
      <category>ubuntu</category>
    </item>
    <item>
      <title>Custom dashboard with Flask</title>
      <dc:creator>codesharedot</dc:creator>
      <pubDate>Wed, 02 Oct 2019 14:16:54 +0000</pubDate>
      <link>https://dev.to/codesharedot/custom-dashboard-with-flask-41gl</link>
      <guid>https://dev.to/codesharedot/custom-dashboard-with-flask-41gl</guid>
      <description>&lt;p&gt;In the previous article you learned &lt;a href="https://dev.to/codesharedot/flask-dashboard-with-python-5a0k"&gt;how to setup a Flask dashboard&lt;/a&gt;. That's great and all, but how do you get your own data in there?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EWtDg0O---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/2yyygdw78c7q9bdmslvl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EWtDg0O---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/2yyygdw78c7q9bdmslvl.png" alt="top items"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'll show you how to change the dashboard data, so that you can use the dashboard as user interface for your Python app.&lt;/p&gt;

&lt;h2&gt;
  
  
  the template
&lt;/h2&gt;

&lt;p&gt;Flask has app logic and templates. Templates are html files with the jinja template langue. Templates are stored in the directory /templates.&lt;/p&gt;

&lt;p&gt;The top template is stored in /templates/includes/top-stats.html&lt;/p&gt;

&lt;p&gt;Change into this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight html"&gt;&lt;code&gt;    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"col"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;h5&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"card-title text-uppercase text-muted mb-0"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;CPU&lt;span class="nt"&gt;&amp;lt;/h5&amp;gt;&lt;/span&gt;
             &lt;span class="nt"&gt;&amp;lt;span&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"stats_traffic"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"h2 font-weight-bold mb-0"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;{{ cpu }}&lt;span class="nt"&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;where &lt;code&gt;{{&lt;/code&gt; and &lt;code&gt;}}&lt;/code&gt; is used to show the variable output &lt;br&gt;
(see &lt;a href="https://pythonbasics.org/flask-tutorial-templates/"&gt;template language tutorial&lt;/a&gt;).&lt;/p&gt;
&lt;h2&gt;
  
  
  the view
&lt;/h2&gt;

&lt;p&gt;Then open views.py&lt;br&gt;
Scroll down to where it says:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight python"&gt;&lt;code&gt;    &lt;span class="c1"&gt;# App main route + generic routing                                                                     
&lt;/span&gt;    &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;route&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'/'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;defaults&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;'path'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;'index.html'&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;route&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'/&amp;lt;path&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;index&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Then change the lines:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight python"&gt;&lt;code&gt;    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;render_template&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'layouts/default.html'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                                &lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;render_template&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s"&gt;'pages/'&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Into&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight python"&gt;&lt;code&gt;    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;render_template&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'layouts/default.html'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                                &lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;render_template&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s"&gt;'pages/'&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cpu&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;99&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Now restart your local webserver. Open the index url and you'll see your variable in the dashboard:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7kZ4diDG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/wee9irgpo9f42kldtavc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7kZ4diDG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/wee9irgpo9f42kldtavc.png" alt="variable"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's it. The principle works for all templates and pages. You can pass any data, from database, url request or more.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Related links:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flask.palletsprojects.com/en/1.1.x/"&gt;Python Flask module&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gum.co/IMzBy"&gt;Create apps with Flask course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pythonbasics.org/flask-tutorial-hello-world/"&gt;Flask hello world tutorial&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>python</category>
      <category>flask</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Flask dashboard with Python</title>
      <dc:creator>codesharedot</dc:creator>
      <pubDate>Tue, 01 Oct 2019 13:19:41 +0000</pubDate>
      <link>https://dev.to/codesharedot/flask-dashboard-with-python-5a0k</link>
      <guid>https://dev.to/codesharedot/flask-dashboard-with-python-5a0k</guid>
      <description>&lt;p&gt;You can create beautiful web apps with Python. For instance, using Flask dashboards.  The module &lt;a href="https://pythonbasics.org/flask-tutorial-hello-world/"&gt;Flask is to make web apps with Python&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;But sometimes the installation script on the project page just doesn't work, as it was the case for "flask-argon-dashboard" on my machine.&lt;/p&gt;

&lt;p&gt;This is how to &lt;strong&gt;fix it&lt;/strong&gt; for &lt;a href="https://github.com/app-generator/flask-argon-dashboard"&gt;flask-argon-dashboard&lt;/a&gt; on Ubuntu Linux.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7ojhJRXh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/g6l2xpcthkwq7cggdybj.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7ojhJRXh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/g6l2xpcthkwq7cggdybj.gif" alt="flask dashboard"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup
&lt;/h2&gt;

&lt;p&gt;Run these commands in the terminal (Ubuntu/Debian):&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt install python3-virtualenv
sudo apt install git
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Clone the repo&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git clone https://github.com/app-generator/flask-argon-dashboard.git
$ cd flask-argon-dashboard
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Initialize and activate a virtualenv:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ virtualenv -p python3 env
$ source env/bin/activate
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Install the dependencies:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ pip install -r requirements.txt
$ pip install flask_login
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Create the database, using Flask shell&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ flask shell
$ &amp;gt;&amp;gt;&amp;gt; from app import db
$ &amp;gt;&amp;gt;&amp;gt; db.create_all()
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6I-b6wHo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://proxy.duckduckgo.com/iu/%3Fu%3Dhttps%253A%252F%252Fmedia.giphy.com%252Fmedia%252FCh5spxgjoHYw8%252Fgiphy.gif%26f%3D1%26nofb%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6I-b6wHo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://proxy.duckduckgo.com/iu/%3Fu%3Dhttps%253A%252F%252Fmedia.giphy.com%252Fmedia%252FCh5spxgjoHYw8%252Fgiphy.gif%26f%3D1%26nofb%3D1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Start server
&lt;/h2&gt;

&lt;p&gt;Run the development server:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ flask run
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;See the running app by visiting &lt;a href="http://localhost:5000"&gt;http://localhost:5000&lt;/a&gt; in your browser&lt;/p&gt;

&lt;p&gt;And there you go! Once opened you can see the dashboard.&lt;/p&gt;

&lt;p&gt;Happy coding!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Related links:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/app-generator/flask-argon-dashboard"&gt;flask-argon-dashboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pythonbasics.org/flask-tutorial-hello-world/"&gt;Flask tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pypi.org/project/Flask/"&gt;Flask framework&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>python</category>
      <category>flask</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
