mirror of
https://github.com/balkian/balkian.github.com.git
synced 2025-02-23 10:15:05 +00:00
205 lines
16 KiB
XML
205 lines
16 KiB
XML
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Cheatsheets on J. Fernando Sánchez</title><link>https://balkian.com/page/cheatsheet/</link><description>Recent content in Cheatsheets on J. Fernando Sánchez</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><atom:link href="https://balkian.com/page/cheatsheet/index.xml" rel="self" type="application/rss+xml"/><item><title>Emacs</title><link>https://balkian.com/emacs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://balkian.com/emacs/</guid><description><img src="https://balkian.com/img/emacs.png" alt="Featured image of post Emacs" /><h2 id="show-plain-text-version">Show plain text version
|
|
</h2><div class="highlight"><div class="chroma">
|
|
<table class="lntable"><tr><td class="lntd">
|
|
<pre tabindex="0" class="chroma"><code><span class="lnt">1
|
|
</span></code></pre></td>
|
|
<td class="lntd">
|
|
<pre tabindex="0" class="chroma"><code class="language-lisp" data-lang="lisp"><span class="line"><span class="cl"><span class="p">(</span><span class="nv">font-lock-mode</span><span class="p">)</span>
|
|
</span></span></code></pre></td></tr></table>
|
|
</div>
|
|
</div></description></item><item><title>Linux</title><link>https://balkian.com/linux/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://balkian.com/linux/</guid><description><img src="https://balkian.com/img/linux.png" alt="Featured image of post Linux" /><h2 id="black-screen-and-lightdm-doesnt-unlock">Black screen and LightDM doesn&rsquo;t unlock
|
|
</h2><p>Add this to your /etc/lightdm/lightdm.conf file:</p>
|
|
<div class="highlight"><div class="chroma">
|
|
<table class="lntable"><tr><td class="lntd">
|
|
<pre tabindex="0" class="chroma"><code><span class="lnt">1
|
|
</span><span class="lnt">2
|
|
</span></code></pre></td>
|
|
<td class="lntd">
|
|
<pre tabindex="0" class="chroma"><code class="language-cfg" data-lang="cfg"><span class="line"><span class="cl"><span class="k">[LightDM]</span>
|
|
</span></span><span class="line"><span class="cl"><span class="na">logind-check-graphical</span><span class="o">=</span><span class="s">true</span>
|
|
</span></span></code></pre></td></tr></table>
|
|
</div>
|
|
</div><p>##Edit previous commands</p>
|
|
<p><code>fc</code> is a shell builtin to list and edit previous commands in an editor.
|
|
In addition to editing a single line (which you can also do with <code>C-x C-e</code>), it also allows you to edit and run several lines at the same time.
|
|
You use it like this:</p>
|
|
<p>List previous commands</p>
|
|
<div class="highlight"><div class="chroma">
|
|
<table class="lntable"><tr><td class="lntd">
|
|
<pre tabindex="0" class="chroma"><code><span class="lnt">1
|
|
</span><span class="lnt">2
|
|
</span><span class="lnt">3
|
|
</span><span class="lnt">4
|
|
</span><span class="lnt">5
|
|
</span></code></pre></td>
|
|
<td class="lntd">
|
|
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">$ <span class="nb">fc</span> -l
|
|
</span></span><span class="line"><span class="cl"><span class="m">10259</span> nvim deploy.sh
|
|
</span></span><span class="line"><span class="cl">10260* <span class="nb">cd</span> ..
|
|
</span></span><span class="line"><span class="cl">10261* nvim content/cheatsheet/linux.md
|
|
</span></span><span class="line"><span class="cl"><span class="m">10262</span> <span class="nb">cd</span>
|
|
</span></span></code></pre></td></tr></table>
|
|
</div>
|
|
</div><p>List commands with date (in zsh)</p>
|
|
<div class="highlight"><div class="chroma">
|
|
<table class="lntable"><tr><td class="lntd">
|
|
<pre tabindex="0" class="chroma"><code><span class="lnt">1
|
|
</span><span class="lnt">2
|
|
</span><span class="lnt">3
|
|
</span><span class="lnt">4
|
|
</span><span class="lnt">5
|
|
</span></code></pre></td>
|
|
<td class="lntd">
|
|
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">$ <span class="nb">fc</span> -ld
|
|
</span></span><span class="line"><span class="cl">10260* 19:38 <span class="nb">cd</span> ..
|
|
</span></span><span class="line"><span class="cl">10261* 19:38 nvim content/cheatsheet/linux.md
|
|
</span></span><span class="line"><span class="cl"><span class="m">10262</span> 19:40 <span class="nb">cd</span>
|
|
</span></span><span class="line"><span class="cl"><span class="m">10263</span> 19:40 <span class="nb">fc</span> -l
|
|
</span></span></code></pre></td></tr></table>
|
|
</div>
|
|
</div><p>You can add the date too:</p>
|
|
<div class="highlight"><div class="chroma">
|
|
<table class="lntable"><tr><td class="lntd">
|
|
<pre tabindex="0" class="chroma"><code><span class="lnt">1
|
|
</span><span class="lnt">2
|
|
</span><span class="lnt">3
|
|
</span><span class="lnt">4
|
|
</span></code></pre></td>
|
|
<td class="lntd">
|
|
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">$ <span class="nb">fc</span> -fld
|
|
</span></span><span class="line"><span class="cl"><span class="m">10262</span> 1/10/2019 19:40 <span class="nb">cd</span>
|
|
</span></span><span class="line"><span class="cl"><span class="m">10263</span> 1/10/2019 19:40 <span class="nb">fc</span> -l
|
|
</span></span><span class="line"><span class="cl"><span class="m">10264</span> 1/10/2019 19:40 <span class="nb">fc</span> -ld
|
|
</span></span></code></pre></td></tr></table>
|
|
</div>
|
|
</div><p>You can edit a range of commands</p>
|
|
<div class="highlight"><div class="chroma">
|
|
<table class="lntable"><tr><td class="lntd">
|
|
<pre tabindex="0" class="chroma"><code><span class="lnt">1
|
|
</span></code></pre></td>
|
|
<td class="lntd">
|
|
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">$ <span class="nb">fc</span> <span class="m">10262</span> <span class="m">10264</span>
|
|
</span></span></code></pre></td></tr></table>
|
|
</div>
|
|
</div><p>The range can be relative to the current position, so the previous command is equivalent to:</p>
|
|
<div class="highlight"><div class="chroma">
|
|
<table class="lntable"><tr><td class="lntd">
|
|
<pre tabindex="0" class="chroma"><code><span class="lnt">1
|
|
</span></code></pre></td>
|
|
<td class="lntd">
|
|
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">$ <span class="nb">fc</span> -3 -1
|
|
</span></span></code></pre></td></tr></table>
|
|
</div>
|
|
</div><p>If you save and exit, all commands are executed as a script, and it will be added to your history.</p>
|
|
<p>Source: <a class="link" href="https://shapeshed.com/unix-fc/" target="_blank" rel="noopener"
|
|
>https://shapeshed.com/unix-fc/</a></p>
|
|
<h2 id="prevent-logoff-from-killing-tmux-sessions">Prevent logoff from killing tmux sessions
|
|
</h2><p>Lately I&rsquo;ve noticed that logging out of i3, intentionally or when i3 fails, would also kill any tmux or emacs sessions.
|
|
This is extremely annoying.</p>
|
|
<p>This is caused by a new default in logind (systemd&rsquo;s login) to kill user process on logoff.
|
|
You can revert this setting in your logind.conf (<code>/etc/systemd/logind.conf</code>):</p>
|
|
<div class="highlight"><div class="chroma">
|
|
<table class="lntable"><tr><td class="lntd">
|
|
<pre tabindex="0" class="chroma"><code><span class="lnt">1
|
|
</span></code></pre></td>
|
|
<td class="lntd">
|
|
<pre tabindex="0" class="chroma"><code class="language-cfg" data-lang="cfg"><span class="line"><span class="cl"><span class="na">KillUserProcesses</span><span class="o">=</span><span class="s">no</span>
|
|
</span></span></code></pre></td></tr></table>
|
|
</div>
|
|
</div><p>Or only for a specific process (e.g., tmux):</p>
|
|
<div class="highlight"><div class="chroma">
|
|
<table class="lntable"><tr><td class="lntd">
|
|
<pre tabindex="0" class="chroma"><code><span class="lnt">1
|
|
</span></code></pre></td>
|
|
<td class="lntd">
|
|
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">systemd-run --scope --user tmux
|
|
</span></span></code></pre></td></tr></table>
|
|
</div>
|
|
</div><p>Source: <a class="link" href="https://unix.stackexchange.com/questions/490267/prevent-logoff-from-killing-tmux-session" target="_blank" rel="noopener"
|
|
>https://unix.stackexchange.com/questions/490267/prevent-logoff-from-killing-tmux-session</a></p>
|
|
<h2 id="upload-a-temporary-file">Upload a temporary file
|
|
</h2><p>Sometimes you just need to copy/paste a file from a server, and copying from the terminal can be a hassle.
|
|
These two services are command-line &ldquo;pastebins&rdquo; just one curl away:</p>
|
|
<div class="highlight"><div class="chroma">
|
|
<table class="lntable"><tr><td class="lntd">
|
|
<pre tabindex="0" class="chroma"><code><span class="lnt">1
|
|
</span><span class="lnt">2
|
|
</span><span class="lnt">3
|
|
</span><span class="lnt">4
|
|
</span><span class="lnt">5
|
|
</span><span class="lnt">6
|
|
</span><span class="lnt">7
|
|
</span><span class="lnt">8
|
|
</span></code></pre></td>
|
|
<td class="lntd">
|
|
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">&lt;command&gt; <span class="p">|</span> curl -F <span class="s1">&#39;sprunge=&lt;-&#39;</span> http://sprunge.us
|
|
</span></span><span class="line"><span class="cl"><span class="c1"># OR</span>
|
|
</span></span><span class="line"><span class="cl">
|
|
</span></span><span class="line"><span class="cl">&lt;command&gt; 2&gt;<span class="p">&amp;</span><span class="m">1</span> <span class="p">|</span> curl -F <span class="s1">&#39;f:1=&lt;-&#39;</span> ix.io
|
|
</span></span><span class="line"><span class="cl">
|
|
</span></span><span class="line"><span class="cl"><span class="c1"># OR</span>
|
|
</span></span><span class="line"><span class="cl">
|
|
</span></span><span class="line"><span class="cl">&lt;command&gt; <span class="p">|</span> curl -F<span class="s2">&#34;file=@-&#34;</span> https://ttm.sh
|
|
</span></span></code></pre></td></tr></table>
|
|
</div>
|
|
</div><h1 id="install-fortinet-sslvpn-support-for-networkmanager">Install Fortinet SSLVPN support for NetworkManager
|
|
</h1><p>UPM (Universidad Politécnica de Madrid) uses a propriatary VPN solution.
|
|
The instructions for GNU/Linux on their website involve downloading a specific client (<code>.tar.gz</code>) and manually running it.
|
|
That works, but it is kind of a hassle.
|
|
A much more convenient alternative is installing this NetworkManager plugin:</p>
|
|
<div class="highlight"><div class="chroma">
|
|
<table class="lntable"><tr><td class="lntd">
|
|
<pre tabindex="0" class="chroma"><code><span class="lnt">1
|
|
</span><span class="lnt">2
|
|
</span></code></pre></td>
|
|
<td class="lntd">
|
|
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">pacman -Sy networkmanager-fortisslvpn
|
|
</span></span><span class="line"><span class="cl"><span class="c1"># Or apt get install networkmanager-fortisslvpn </span>
|
|
</span></span></code></pre></td></tr></table>
|
|
</div>
|
|
</div><p>Now you can simply add a new VPN connection in NetworkManager and manage it as you would any other connection.</p></description></item><item><title>Python</title><link>https://balkian.com/python/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://balkian.com/python/</guid><description><img src="https://balkian.com/img/python.png" alt="Featured image of post Python" /><h2 id="interesting-libraries">Interesting libraries
|
|
</h2><h3 id="tqdm"><a class="link" href="https://github.com/tqdm/tqdm" target="_blank" rel="noopener"
|
|
>TQDM</a>
|
|
</h3><p>From tqdm&rsquo;s github repository:</p>
|
|
<blockquote>
|
|
<p>tqdm means &ldquo;progress&rdquo; in Arabic (taqadum, تقدّم) and an abbreviation for &ldquo;I love you so much&rdquo; in Spanish (te quiero demasiado).</p></blockquote>
|
|
<p><img src="https://raw.githubusercontent.com/tqdm/tqdm/master/images/tqdm.gif"
|
|
loading="lazy"
|
|
alt="TQDM in action"
|
|
></p>
|
|
<h2 id="tools">Tools
|
|
</h2><h3 id="uv"><a class="link" href="https://github.com/astral-sh/uv" target="_blank" rel="noopener"
|
|
>uv</a>
|
|
</h3><p>🚀 A single tool to replace pip, pip-tools, pipx, poetry, pyenv, twine, virtualenv, and more.
|
|
⚡️ 10-100x faster than pip.</p>
|
|
<ul>
|
|
<li>Provides comprehensive project management, with a universal lockfile.</li>
|
|
<li>Runs scripts, with support for inline dependency metadata.</li>
|
|
<li>Installs and manages Python versions.</li>
|
|
<li>Runs and installs tools published as Python packages.</li>
|
|
<li>Includes a pip-compatible interface for a performance boost with a familiar CLI.</li>
|
|
<li>Supports Cargo-style workspaces for scalable projects.</li>
|
|
<li>Disk-space efficient, with a global cache for dependency deduplication.</li>
|
|
<li>Installable without Rust or Python via curl or pip.</li>
|
|
<li>Supports macOS, Linux, and Windows.</li>
|
|
</ul></description></item><item><title>Raspberry Pi</title><link>https://balkian.com/raspberry-pi/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://balkian.com/raspberry-pi/</guid><description><img src="https://balkian.com/img/rpi.png" alt="Featured image of post Raspberry Pi" /><h2 id="hdmi-flickering">HDMI flickering
|
|
</h2><p>Avoid HDMI flickering/intermittent blanking on RPI with a 1400x1050 VGA monitor.</p>
|
|
<div class="highlight"><div class="chroma">
|
|
<table class="lntable"><tr><td class="lntd">
|
|
<pre tabindex="0" class="chroma"><code><span class="lnt">1
|
|
</span><span class="lnt">2
|
|
</span><span class="lnt">3
|
|
</span><span class="lnt">4
|
|
</span><span class="lnt">5
|
|
</span><span class="lnt">6
|
|
</span></code></pre></td>
|
|
<td class="lntd">
|
|
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl">
|
|
</span></span><span class="line"><span class="cl"> <span class="n">hdmi_drive</span><span class="o">=</span><span class="mi">2</span>
|
|
</span></span><span class="line"><span class="cl"> <span class="n">hdmi_group</span><span class="o">=</span><span class="mi">2</span>
|
|
</span></span><span class="line"><span class="cl"> <span class="n">hdmi_mode</span><span class="o">=</span><span class="mi">42</span>
|
|
</span></span><span class="line"><span class="cl"> <span class="n">disable_overscan</span><span class="o">=</span><span class="mi">1</span>
|
|
</span></span><span class="line"><span class="cl"> <span class="n">config_hdmi_boost</span><span class="o">=</span><span class="mi">7</span>
|
|
</span></span></code></pre></td></tr></table>
|
|
</div>
|
|
</div></description></item></channel></rss> |