<?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: Maciej Błędkowski</title>
    <description>The latest articles on DEV Community by Maciej Błędkowski (@mble).</description>
    <link>https://dev.to/mble</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F238969%2F6db2dc62-5120-43ee-b603-6d7569d65ada.png</url>
      <title>DEV Community: Maciej Błędkowski</title>
      <link>https://dev.to/mble</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mble"/>
    <language>en</language>
    <item>
      <title>Installing Obsidian and other deb packages on Debian</title>
      <dc:creator>Maciej Błędkowski</dc:creator>
      <pubDate>Wed, 13 Sep 2023 18:57:49 +0000</pubDate>
      <link>https://dev.to/mble/installing-obsidian-and-other-deb-packages-on-debian-5h5</link>
      <guid>https://dev.to/mble/installing-obsidian-and-other-deb-packages-on-debian-5h5</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Many programs that you would like to run are not in the APT repositories. What to do in this case? There are multiple solutions, and one of them is to just install it from deb file.&lt;/p&gt;

&lt;h2&gt;
  
  
  .deb
&lt;/h2&gt;

&lt;p&gt;In order to install .deb package on Debian execute the following command:&lt;br&gt;
&lt;code&gt;sudo dpkg -i &amp;lt;path_to_deb_file&amp;gt;&lt;/code&gt;&lt;br&gt;
In case of the latest Obsidian text editor package downloaded into "Downloads" directory it is:&lt;br&gt;
&lt;code&gt;sudo dpkg -i ~/Downloads/obsidian_1.4.5_amd64.deb&lt;/code&gt;&lt;/p&gt;

</description>
      <category>debian</category>
      <category>obsidian</category>
      <category>deb</category>
      <category>apt</category>
    </item>
    <item>
      <title>Installing latest Neovim and LunarVim on Debian</title>
      <dc:creator>Maciej Błędkowski</dc:creator>
      <pubDate>Wed, 13 Sep 2023 18:53:44 +0000</pubDate>
      <link>https://dev.to/mble/installing-latest-neovim-and-lunarvim-on-debian-3cg1</link>
      <guid>https://dev.to/mble/installing-latest-neovim-and-lunarvim-on-debian-3cg1</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;What is the first thing, that we would love to do on our freshly installed Debian instance? Code of course! There multiple great code editors out there, but the one that is almost universaly beloved by the hackers is Vim and its successor Neovim.&lt;br&gt;
Here you can find how to install the latest release of Neovim; and its distribution LunarVim, that makes coding in nvim easier than ever.&lt;/p&gt;
&lt;h2&gt;
  
  
  Neovim
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Go to Neovim &lt;a href="https://github.com/neovim/neovim/releases/latest/"&gt;release page&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Download an AppImage&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Open Bash (or any other POSIX compliant shell)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Move an AppImage file to &lt;code&gt;/usr/local/bin/&lt;/code&gt;, and rename it from &lt;code&gt;nvim.appimage&lt;/code&gt; to just &lt;code&gt;nvim&lt;/code&gt; - &lt;code&gt;mv ~/Downloads/nvim.appimage /usr/local/bin/nvim&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Set the &lt;code&gt;CUSTOM_NVIM_PATH&lt;/code&gt; to the location of Neovim binary - &lt;code&gt;CUSTOM_NVIM_PATH=/usr/local/bin/nvim&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Run the following commands:
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nt"&gt;-u&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;update-alternatives &lt;span class="nt"&gt;--install&lt;/span&gt; /usr/bin/ex ex &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CUSTOM_NVIM_PATH&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; 110
&lt;span class="nb"&gt;sudo &lt;/span&gt;update-alternatives &lt;span class="nt"&gt;--install&lt;/span&gt; /usr/bin/vi vi &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CUSTOM_NVIM_PATH&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; 110
&lt;span class="nb"&gt;sudo &lt;/span&gt;update-alternatives &lt;span class="nt"&gt;--install&lt;/span&gt; /usr/bin/view view &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CUSTOM_NVIM_PATH&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; 110
&lt;span class="nb"&gt;sudo &lt;/span&gt;update-alternatives &lt;span class="nt"&gt;--install&lt;/span&gt; /usr/bin/vim vim &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CUSTOM_NVIM_PATH&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; 110
&lt;span class="nb"&gt;sudo &lt;/span&gt;update-alternatives &lt;span class="nt"&gt;--install&lt;/span&gt; /usr/bin/vimdiff vimdiff &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CUSTOM_NVIM_PATH&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; 110
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;a href="https://github.com/neovim/neovim/wiki/Installing-Neovim#debianusing"&gt;1&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;[Optional] Add neovim python package for python support - &lt;code&gt;sudo apt install python3-neovim&lt;/code&gt; &lt;a href="https://github.com/neovim/neovim/wiki/Installing-Neovim#debianusing"&gt;1&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  LunarVim
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Install all the necessary packages (some of them are optional):
&lt;code&gt;sudo apt install git make python3 python3-pip python3-pynvim npm nodejs cargo&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Run command from &lt;a href="https://www.lunarvim.org/docs/installation#release"&gt;LunarVim's installation guide&lt;/a&gt; to get the latest release. As of the day I am writing this post it is:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;LV_BRANCH='release-1.3/neovim-0.9' bash &amp;lt;(curl -s https://raw.githubusercontent.com/LunarVim/LunarVim/release-1.3/neovim-0.9/utils/installer/install.sh)&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;Answer as follows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;NodeJS dependencies - Yes&lt;/li&gt;
&lt;li&gt;Python dependencies - No (pip environment is managed by the system, and we have already installed pynvim)&lt;/li&gt;
&lt;li&gt;Rust dependencies - No (because &lt;code&gt;rustc&lt;/code&gt; is probably to old)
## Nerd Fonts
In order for LunarVim to render correctly, you need one of the Nerd Fonts patched font.&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Clone the Nerd Fonts repo - &lt;code&gt;git clone --depth=1 &lt;a href="mailto:git@github.com"&gt;git@github.com&lt;/a&gt;:ryanoasis/nerd-fonts.git&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;cd into cloned repo - &lt;code&gt;cd nerd-fonts&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run shell script in the repo, to install all Nerd Fonts patched fonts - &lt;code&gt;./install.sh&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Change the default font in your terminal to one of the Nerd Fonts (e.g. JetBrains Mono Nerd Font) and restart it.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>debian</category>
      <category>vim</category>
      <category>neovim</category>
      <category>nerdfonts</category>
    </item>
    <item>
      <title>Getting newer packages, by using Testing repositories on Debian</title>
      <dc:creator>Maciej Błędkowski</dc:creator>
      <pubDate>Wed, 13 Sep 2023 18:52:39 +0000</pubDate>
      <link>https://dev.to/mble/getting-newer-packages-by-using-testing-repositories-on-debian-pmk</link>
      <guid>https://dev.to/mble/getting-newer-packages-by-using-testing-repositories-on-debian-pmk</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;If you are in need of newer packages, you can get them by using Testing repositories, here I will show you how.&lt;/p&gt;

&lt;h2&gt;
  
  
  Modify /etc/apt/sources.list
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Testing
deb http://deb.debian.org/debian/ testing main contrib non-free-firmware non-free
deb-src http://deb.debian.org/debian/ testing main contrib non-free-firmware non-free

# Testing security updates
deb http://security.debian.org/debian-security testing-security main contrib non-free-firmware non-free
deb-src http://security.debian.org/debian-security testing-security main contrib non-free-firmware non-free

# Stable
deb https://deb.debian.org/debian stable main contrib non-free-firmware non-free
deb-src https://deb.debian.org/debian stable main contrib non-free-firmware non-free

# Stable security updates
deb http://security.debian.org/debian-security stable-security main contrib non-free-firmware non-free
deb-src http://security.debian.org/ stable-security main contrib non-free-firmware non-free
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And that is it. Now you can enjoy the latest and gratest packages from Debian Testing. If there is a package that you need, that has not been added to Testing, you also have the Stable repository, so you can get it without any problems. Using "testing" and "stable" instead of current distribution name, means that you do not need to worry about regularly changing your sources.list.&lt;/p&gt;

</description>
      <category>debian</category>
      <category>linux</category>
      <category>package</category>
      <category>repository</category>
    </item>
    <item>
      <title>Is jail-breaking a BlackBerry possible?</title>
      <dc:creator>Maciej Błędkowski</dc:creator>
      <pubDate>Sun, 07 May 2023 12:48:26 +0000</pubDate>
      <link>https://dev.to/mble/is-jail-breaking-a-blackberry-possible-5g94</link>
      <guid>https://dev.to/mble/is-jail-breaking-a-blackberry-possible-5g94</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;Almost a year ago I bought a BlackBerry Passport with intend of running Linux on it. The problem is that I did not do a lot of research on this topic. I assumed that "of course you can install whatever you want on it, back in the 2014 every phone had its bootloader unlocked". Maybe every phone had, but with exception of BlackBerry.&lt;br&gt;
BlackBerry do not have a standard Android installed. What is installed on this phone, is BlackBerry 10 OS, which uses QNX kernel under the hood (UNIX), and Android emulation layer on top of it. All of the 10.3.x releases (only those apply to the BlackBerry Passport) are based on the modified version of QNX 6.6. You can run on it both BAR, and APK apps. BAR is a BlackBerry OS application, and APK is an Android application.&lt;br&gt;
The version that my device is running it the latest one - 10.3.3.3216, released in 2018. When you run &lt;code&gt;uname -a&lt;/code&gt; on it, it would tell you that the QNX version is 8.0.0, but this is not true, as the latest QNX version released at the time was QNX SDP 7.0, and it is probably not the one, that is running on my device. The Android emulation layer version is Android 4.3 Jelly Bean (API 18).&lt;/p&gt;

&lt;h1&gt;
  
  
  Applications and Terminal
&lt;/h1&gt;

&lt;p&gt;The BlackBerry 10 OS has two app-stores - BlackBerry World and Amazon Appstore. There is no Google Play, because it is not an Android phone, and it do not meet the Google's requirements for its apps to be provided.&lt;br&gt;
BlackBerry World was turned off in January 2022, and I could not figure out how to login into Amazon Appstore, so we have to get our apps the other way.&lt;br&gt;
First you have to complete the setup process, here is the detailed guide on how to do this: &lt;a href="https://forums.crackberry.com/blackberry-10-os-f269/fix-bb10-devices-stuck-setup-sideloading-issue-1193846/"&gt;https://forums.crackberry.com/blackberry-10-os-f269/fix-bb10-devices-stuck-setup-sideloading-issue-1193846/&lt;/a&gt; You cannot simply log into your BlackBerry ID, as it was also turned off.&lt;br&gt;
There is a reupload site for BlackBerry apps, and Android apps that support API 18. &lt;a href="https://bbstore.vercel.app/apps"&gt;https://bbstore.vercel.app/apps&lt;/a&gt;&lt;br&gt;
There is also an F-droid store, that allows you to download open-source apps from different F-droid repositories. &lt;a href="https://f-droid.org/en/"&gt;https://f-droid.org/en/&lt;/a&gt;&lt;br&gt;
You can easily install Android apps from unknown sources, but when it comes to installing BAR files, it is not as easy as downloading it on your device and running it.&lt;/p&gt;

&lt;h2&gt;
  
  
  BAR - BlackBerry apps
&lt;/h2&gt;

&lt;p&gt;In order to install BAR files on your phone, you need to complete the setup on your phone (see above), download and install BlackBerry Link with BlackBerry drivers - &lt;a href="https://www.blackberry.com/us/en/products/devices/software/desktop/blackberry-link"&gt;https://www.blackberry.com/us/en/products/devices/software/desktop/blackberry-link&lt;/a&gt;, download and install DBBT - &lt;a href="https://bbstore.vercel.app/tools/0001"&gt;https://bbstore.vercel.app/tools/0001&lt;/a&gt;, connect your device, and in the DBBT select and install your BAR file.&lt;/p&gt;

&lt;h2&gt;
  
  
  Terminal
&lt;/h2&gt;

&lt;p&gt;The most interesting BAR application, that I wanted to try out was the terminal. There are multiple terminal emulators available, but the most interesting one is Term48 and its fork Term49.&lt;br&gt;
I took my terminal app from &lt;a href="https://bbstore.vercel.app/apps/pXamnItRxbzmRZLwIJUN"&gt;https://bbstore.vercel.app/apps/pXamnItRxbzmRZLwIJUN&lt;/a&gt; It is some sort of modded Term48/Term49. You can also install the Term49 from its GitHub page &lt;a href="https://github.com/BerryFarm/Term49/releases"&gt;https://github.com/BerryFarm/Term49/releases&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  UNIX tools
&lt;/h3&gt;

&lt;p&gt;After installing it, you now have access to QNX shell, but you may notice, that there are not a lot of tools accessible inside of it.&lt;br&gt;
This is where BerryMuch comes in handy. In order to install it, take a look at the guide at BerryMuch's GitHub page - &lt;a href="https://github.com/BerryFarm/berrymuch#user"&gt;https://github.com/BerryFarm/berrymuch#user&lt;/a&gt; If you have problems with running the script, remember to change the permissions of the file - &lt;code&gt;chmod +x&lt;/code&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Jailbreak
&lt;/h1&gt;

&lt;p&gt;The bootloader on BlackBerry devices is locked, and protected by a security chip. Without major changes to the hardware, you would not be able to install your own operating system. Only the images signed by the BlackBerry can be installed. But not all hopes should be lost, the part protected by the security chip is only the QNX kernel in /.boot and /base directories, so theoretically with root access, you could modify everything in the user space, without bricking the phone. You could possibly change everything and leave only the kernel in place.&lt;br&gt;
The problem is that you do not have access to the root account. And there is no documented way of getting an access to it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Privilege escalation
&lt;/h2&gt;

&lt;p&gt;There are multiple CVEs documenting privilege escalation vulnerabilities in the QNX kernel &lt;a href="https://www.opencve.io/cve?cvss=&amp;amp;search=qnx"&gt;https://www.opencve.io/cve?cvss=&amp;amp;search=qnx&lt;/a&gt; The problem is that most of them are not public, with very little information about the vector of attack. The only documented one I have found for my version of QNX - 6.6, was this one - &lt;a href="https://www.opencve.io/cve/CVE-2017-3891"&gt;https://www.opencve.io/cve/CVE-2017-3891&lt;/a&gt; and it did not work on my device.&lt;/p&gt;

&lt;h2&gt;
  
  
  So is it possible?
&lt;/h2&gt;

&lt;p&gt;If you could find more information, about how this CVE was discovered &lt;a href="https://www.opencve.io/cve/CVE-2021-32025"&gt;https://www.opencve.io/cve/CVE-2021-32025&lt;/a&gt; then of course. You still would not have the ability to remove QNX kernel and replace it with your own, but at least you could change the version of Android emulation, or install the Linux virtual machine. There is also the other way of desoldering the memory chip, and changing the files not secured by the chip directly, although I do not know much about it.&lt;/p&gt;

&lt;p&gt;Best regards,&lt;br&gt;
mble&lt;/p&gt;

</description>
      <category>blackberry</category>
      <category>qnx</category>
      <category>jailbreak</category>
      <category>root</category>
    </item>
    <item>
      <title>Technologies I'm learning in 2023, and what I have learned in 2022</title>
      <dc:creator>Maciej Błędkowski</dc:creator>
      <pubDate>Fri, 30 Dec 2022 20:31:29 +0000</pubDate>
      <link>https://dev.to/mble/technologies-im-learning-in-2023-and-what-i-have-learned-in-2022-351d</link>
      <guid>https://dev.to/mble/technologies-im-learning-in-2023-and-what-i-have-learned-in-2022-351d</guid>
      <description>&lt;p&gt;As the year 2022 comes to a close, I wanted to reflect on the technologies I learned and accomplished this past year and also look forward to the technologies I hope to learn in 2023.&lt;/p&gt;

&lt;h2&gt;
  
  
  2022 - what I have learned
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Web Technologies and other
&lt;/h3&gt;

&lt;p&gt;In 2022, I made significant progress in my web development skills by learning and working with a variety of frameworks and tools. These included Nuxt 2 and Nuxt 3, Nestjs, and Deno + Fresh. I learned about TailwindCSS, a CSS framework for building custom user interfaces, and also read a book called Refactoring UI (by the author of Tailwind). I also became proficient in using Puppeteer, Playwright and Crawlee for web scraping and crawling, and learned about the powerful NixOS operating system with its reproducible configs. I also gained experience with the Go programming language through competitive programming.&lt;/p&gt;

&lt;h3&gt;
  
  
  AI, text models, image generators
&lt;/h3&gt;

&lt;p&gt;In addition to web development, I also delved into the world of artificial intelligence and machine learning by learning about the GPT-3 and GPT-3.5 models, as well as Dall-E 2, Midjourney 3 and Stable Diffusion 1.5 image generation models. I even made a little bit of money by generating images with Midjourney for a friend who creates animations using those images. These tools have the potential to revolutionize the way we build our systems. I believe that they can dramatically improve certain elements of our work, such as generating code or helping to solve problems. For example, I have started using GPT-3 to implement a "title to standard name" converter for a repository of Minecraft plugins. I am also planning to create a "versions to semver" converter, where you can give versions in any format and it will give them back in a format that is semver compatible. While GPT models are not free and can get expensive at scale, they can be very useful for certain tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  2023 - what I want to learn
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Mostly low level things
&lt;/h3&gt;

&lt;p&gt;As I look ahead to 2023, I have several technologies on my learning list. At the top of the list is Rust, a programming language known for its performance and memory safety. I also hope to learn about Ansible, a configuration management tool, and Jest, a popular JavaScript testing framework.&lt;/p&gt;

&lt;h3&gt;
  
  
  Web Technologies, Graphics Design and other
&lt;/h3&gt;

&lt;p&gt;I also plan to continue learning and gaining experience with React and NextJS, as well as Go. In terms of design, I'm excited to learn more about UI and logo design using Affinity Designer and Figma. I am also interested in learning about Base Web, a design system developed by Uber, and implementing it in my next project.&lt;/p&gt;

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

&lt;p&gt;In summary, 2022 was a great year for learning and I'm excited to continue expanding my skills in 2023. I'm looking forward to diving into Rust and other new technologies, as well as continuing to improve my skills in web development and design.&lt;/p&gt;

&lt;h2&gt;
  
  
  License
&lt;/h2&gt;

&lt;p&gt;Creative Commons Attribution Share Alike 4.0 International (&lt;a href="https://spdx.org/licenses/CC-BY-SA-4.0"&gt;CC-BY-SA-4.0&lt;/a&gt;)&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Listening to Spotify fully open-source way</title>
      <dc:creator>Maciej Błędkowski</dc:creator>
      <pubDate>Wed, 25 May 2022 00:03:00 +0000</pubDate>
      <link>https://dev.to/mble/listening-to-spotify-fully-open-source-way-4540</link>
      <guid>https://dev.to/mble/listening-to-spotify-fully-open-source-way-4540</guid>
      <description>&lt;h1&gt;
  
  
  Listening to Spotify fully open-source way
&lt;/h1&gt;

&lt;p&gt;Hi, in this article I am going to show you how to listen to Spotify using only open-source software.&lt;/p&gt;

&lt;h2&gt;
  
  
  First of all you need to install those two packages:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;spotifyd&lt;/li&gt;
&lt;li&gt;spotify-qt&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Second of all you need to configure &lt;code&gt;spotifyd&lt;/code&gt;.
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Create if not present, and edit the &lt;code&gt;~/.config/spotifyd/spotifyd.conf&lt;/code&gt; file.&lt;/li&gt;
&lt;li&gt;Assign your Spotify nickname to the &lt;code&gt;username&lt;/code&gt; variable.

&lt;ol&gt;
&lt;li&gt;To get your nickname open &lt;code&gt;open.spotify.com&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Click on your profile icon and select &lt;code&gt;Profile&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Click on three dots and select &lt;code&gt;Copy link to profile&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;https://open.spotify.com/user/themcmaciej?si=496a60d5280d4360&lt;/code&gt; - in place of &lt;code&gt;themcmaciej&lt;/code&gt; there will be your nickname&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;
&lt;li&gt;Provide your password. There are three ways to do this.

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;password&lt;/code&gt; - just put your password in the config&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;password_cmd&lt;/code&gt; - provide a command that would output on STDOUT your password

&lt;ol&gt;
&lt;li&gt;You can use the &lt;code&gt;cat&lt;/code&gt; command to print your password from the file - &lt;code&gt;cat /.config/spotifyd/.env&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;use_keyring&lt;/code&gt; - your password is being taken from the system's keyring&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Set bitrate using the &lt;code&gt;bitrate&lt;/code&gt; variable

&lt;ol&gt;
&lt;li&gt;E.g. &lt;code&gt;bitrate = 320&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;
&lt;li&gt;Enable cache by setting &lt;code&gt;no_audio_cache = false&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;initial_volume&lt;/code&gt; to a value between 0 and 100 for your initial volume

&lt;ol&gt;
&lt;li&gt;If &lt;code&gt;spotifyd -V&lt;/code&gt; shows you version lower than 0.4 use string as a value - &lt;code&gt;initial_volume = "45"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;If it displays a version equal to or higher than 0.4 use an integer as a value - &lt;code&gt;initial_volume = 45&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For example of &lt;code&gt;spotifyd.conf&lt;/code&gt; you may want to check out &lt;a href="https://github.com/mbledkowski/dotfiles/tree/main/global/home/mble/.config/spotifyd"&gt;my dotfiles repository&lt;/a&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  Last but not least, you need to set up &lt;code&gt;spotify-qt&lt;/code&gt;.
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;a href="https://developer.spotify.com/dashboard/"&gt;https://developer.spotify.com/dashboard/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Create a new app&lt;/li&gt;
&lt;li&gt;Copy &lt;code&gt;Client ID&lt;/code&gt; and &lt;code&gt;Client Secret&lt;/code&gt; and enter them in the spotify-qt login screen&lt;/li&gt;
&lt;li&gt;In the terminal enter the &lt;code&gt;which spotifyd&lt;/code&gt; and copy the value&lt;/li&gt;
&lt;li&gt;Go to &lt;code&gt;Settings&lt;/code&gt; &amp;gt; &lt;code&gt;Spotify&lt;/code&gt; and enter the copied value in &lt;code&gt;Client Path&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;Check &lt;code&gt;Start with app&lt;/code&gt;, go to &lt;code&gt;Configuration&lt;/code&gt; and check &lt;code&gt;Use global config&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;In &lt;code&gt;General&lt;/code&gt; click the &lt;code&gt;Start client&lt;/code&gt; or restart an app.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  And that's it, enjoy your fully libre Spotify experience :D
&lt;/h2&gt;

&lt;h2&gt;
  
  
  License
&lt;/h2&gt;

&lt;p&gt;Creative Commons Attribution Share Alike 4.0 International (&lt;a href="https://spdx.org/licenses/CC-BY-SA-4.0"&gt;CC-BY-SA-4.0&lt;/a&gt;)&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
