Many craftWowSuch createhttps://maciej.lasyk.info/2015-12-21T00:00:00+01:00Fixing text highlighting in tmux/man/less2015-12-21T00:00:00+01:002015-12-21T00:00:00+01:00Maciej Lasyktag:maciej.lasyk.info,2015-12-21:2015/Dec/21/fixing-text-highlighting-in-tmuxmanless/<p><center><img alt="tmux" src="https://maciej.lasyk.info/images/tmux.png" /></center></p>
<p>So today I spotted an in issue while using search function when reading man
pages. Basically <strong>I didn't have results highlighted</strong>, but search worked
(position of screen scrolled to somewhere near first spotted result).</p>
<p>Firstly tried to blame <a href="https://en.wikipedia.org/wiki/Terminator_%28terminal_emulator%29">Terminator</a>
but I had same issue in <a href="https://en.wikipedia.org/wiki/Guake">Guake</a> session. Finally I found that
the common denominator here was tmux. Outside of tmux there was no such problems.</p>
<h3>Solution?</h3>
<p>So I dug the internets and <a href="http://tmux.svn.sourceforge.net/viewvc/tmux/trunk/FAQ">found a solution</a>:</p>
<p><em>vim displays reverse video instead of italics, while less displays italics
(or just regular text) instead of reverse. What's wrong?</em></p>
<p><em>Screen's terminfo description lacks italics mode and has standout mode in its
place, but using the same escape sequence that urxvt uses for italics. This
means applications (like vim) looking for italics will not find it and might
turn to reverse in its place, while applications (like less) asking for
standout will end up with italics instead of reverse. To make applications
aware that tmux supports italics and to use a proper escape sequence for
standout, you'll need to create a new terminfo file with modified sgr, smso,
rmso, sitm and ritm entries:</em></p>
<div class="highlight"><pre><span></span>$<span class="w"> </span>mkdir<span class="w"> </span><span class="nv">$HOME</span>/.terminfo/
$<span class="w"> </span><span class="nv">screen_terminfo</span><span class="o">=</span><span class="s2">"screen"</span>
$<span class="w"> </span>infocmp<span class="w"> </span><span class="s2">"</span><span class="nv">$screen_terminfo</span><span class="s2">"</span><span class="w"> </span><span class="p">|</span><span class="w"> </span>sed<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>-e<span class="w"> </span><span class="s1">'s/^screen[^|]*|[^,]*,/screen-it|screen with italics support,/'</span><span class="w"> </span><span class="se">\</span>
<span class="w"> </span>-e<span class="w"> </span><span class="s1">'s/%?%p1%t;3%/%?%p1%t;7%/'</span><span class="w"> </span><span class="se">\</span>
<span class="w"> </span>-e<span class="w"> </span><span class="s1">'s/smso=[^,]*,/smso=\\E[7m,/'</span><span class="w"> </span><span class="se">\</span>
<span class="w"> </span>-e<span class="w"> </span><span class="s1">'s/rmso=[^,]*,/rmso=\\E[27m,/'</span><span class="w"> </span><span class="se">\</span>
<span class="w"> </span>-e<span class="w"> </span><span class="s1">'$s/$/ sitm=\\E[3m, ritm=\\E[23m,/'</span><span class="w"> </span>><span class="w"> </span>/tmp/screen.terminfo
$<span class="w"> </span>tic<span class="w"> </span>/tmp/screen.terminfo
</pre></div>
<p><em>And tell tmux to use it in ~/.tmux.conf:</em></p>
<div class="highlight"><pre><span></span>set -g default-terminal "screen-it"
</pre></div>
<p><em>If your terminal supports 256 colors, use:</em></p>
<div class="highlight"><pre><span></span>$<span class="w"> </span><span class="nv">screen_terminfo</span><span class="o">=</span><span class="s2">"screen-256color"</span>
</pre></div>
<p><em>instead of "screen".</em></p>
<h3>Ansible playbook for this</h3>
<p>So I created <a href="https://github.com/docent-net/fedora-desktop-ansible/commit/d314aedd61e6973df3de16bd557de7e3f3aecb3d">Ansible implementation</a>
and put in inside of <a href="https://github.com/docent-net/fedora-desktop-ansible">fedora-desktop-ansible</a>.</p>
<p>You can test it with:</p>
<div class="highlight"><pre><span></span>ansible-playbook<span class="w"> </span>master.yml<span class="w"> </span>--tags<span class="w"> </span>tmux
</pre></div>GIT: clone only one file2014-11-20T00:00:00+01:002014-11-20T00:00:00+01:00Maciej Lasyktag:maciej.lasyk.info,2014-11-20:2014/Nov/20/git-clone-only-one-file/<p><center><img alt="GIT" src="https://maciej.lasyk.info/images/git.png" /></center></p>
<h3>What?</h3>
<p>So I have a quite big bare repo somewhere and needed to get only one file from
there (of course - didn't know the exact filename). Frankly my GIT-fu is not
that kinky, so the way I did it could cause a little bit of smile on someones
mouth ;)</p>
<h3>How?</h3>
<p>A slice from my notes:</p>
<div class="highlight"><pre><span></span><span class="c1"># on a local FS:</span>
$<span class="w"> </span>git<span class="w"> </span>init<span class="w"> </span>.<span class="w"> </span><span class="c1"># create empty repo on local FS</span>
$<span class="w"> </span>git<span class="w"> </span>remote<span class="w"> </span>add<span class="w"> </span>remote_name<span class="w"> </span>path<span class="w"> </span><span class="c1"># add a remote</span>
</pre></div>
<div class="highlight"><pre><span></span><span class="c1"># on a remote, bare repo:</span>
$<span class="w"> </span>git<span class="w"> </span>log<span class="w"> </span>-n<span class="w"> </span><span class="m">10</span><span class="w"> </span><span class="c1"># get last commits id</span>
$<span class="w"> </span>git<span class="w"> </span>show<span class="w"> </span>--name-only<span class="w"> </span>commit_id<span class="w"> </span><span class="c1"># get listing of files from the last commits</span>
</pre></div>
<div class="highlight"><pre><span></span><span class="c1"># on a local FS:</span>
$<span class="w"> </span>git<span class="w"> </span>archive<span class="w"> </span>--remote<span class="o">=</span>remote_name<span class="w"> </span>HEAD:some/dir/somewhere<span class="w"> </span>filename<span class="w"> </span><span class="p">|</span><span class="w"> </span>tar<span class="w"> </span>xf<span class="w"> </span>-
</pre></div>
<p>So this way you'll end up with only one file scrapped from the remote repo.</p>Tmux: join-pane2014-11-19T00:00:00+01:002014-11-19T00:00:00+01:00Maciej Lasyktag:maciej.lasyk.info,2014-11-19:2014/Nov/19/tmux-join-pane/<p><center><img alt="TMUX" src="https://maciej.lasyk.info/images/tmux.png" /></center></p>
<p>Today I finally learnt how to move a pane between windows in
<a href="http://tmux.sourceforge.net/">Tmux</a> and yes - I will share this vodoo
knowledge with you guys.</p>
<p>Searching through the internet gives us this:</p>
<div class="highlight"><pre><span></span><span class="c1"># pane movement</span>
bind-key<span class="w"> </span>j<span class="w"> </span>command-prompt<span class="w"> </span>-p<span class="w"> </span><span class="s2">"join pane from:"</span><span class="w"> </span><span class="s2">"join-pane -s '%%'"</span>
bind-key<span class="w"> </span>s<span class="w"> </span>command-prompt<span class="w"> </span>-p<span class="w"> </span><span class="s2">"send pane to:"</span><span class="w"> </span><span class="s2">"join-pane -t '%%'"</span>
</pre></div>
<p>This is the most popular binding for this 'moving' purposes. But - when you try
it entering window number as the destination (or source) you get a message:</p>
<blockquote>
<p>Can’t join a pane to its own window</p>
</blockquote>
<p>WTF?</p>
<p>Let's RTFM:</p>
<blockquote>
<div class="highlight"><pre><span></span><span class="w"> </span><span class="nv">join</span><span class="o">-</span><span class="nv">pane</span><span class="w"> </span>[<span class="o">-</span><span class="nv">bdhv</span>]<span class="w"> </span>[<span class="o">-</span><span class="nv">l</span><span class="w"> </span><span class="nv">size</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">-</span><span class="nv">p</span><span class="w"> </span><span class="nv">percentage</span>]<span class="w"> </span>[<span class="o">-</span><span class="nv">s</span><span class="w"> </span><span class="nv">src</span><span class="o">-</span><span class="nv">pane</span>]<span class="w"> </span>[<span class="o">-</span><span class="nv">t</span><span class="w"> </span><span class="nv">dst</span><span class="o">-</span><span class="nv">pane</span>]
<span class="w"> </span><span class="ss">(</span><span class="nv">alias</span>:<span class="w"> </span><span class="nv">joinp</span><span class="ss">)</span>
<span class="w"> </span><span class="nv">Like</span><span class="w"> </span><span class="nv">split</span><span class="o">-</span><span class="nv">window</span>,<span class="w"> </span><span class="nv">but</span><span class="w"> </span><span class="nv">instead</span><span class="w"> </span><span class="nv">of</span><span class="w"> </span><span class="nv">splitting</span>
<span class="w"> </span><span class="nv">dst</span><span class="o">-</span><span class="nv">pane</span><span class="w"> </span><span class="nv">and</span><span class="w"> </span><span class="nv">creating</span><span class="w"> </span><span class="nv">a</span><span class="w"> </span><span class="nv">new</span><span class="w"> </span><span class="nv">pane</span>,<span class="w"> </span><span class="nv">split</span><span class="w"> </span><span class="nv">it</span><span class="w"> </span><span class="nv">and</span>
<span class="w"> </span><span class="nv">move</span><span class="w"> </span><span class="nv">src</span><span class="o">-</span><span class="nv">pane</span><span class="w"> </span><span class="nv">into</span><span class="w"> </span><span class="nv">the</span><span class="w"> </span><span class="nv">space</span>.<span class="w"> </span><span class="nv">This</span><span class="w"> </span><span class="nv">can</span><span class="w"> </span><span class="nv">be</span><span class="w"> </span><span class="nv">used</span>
<span class="w"> </span><span class="nv">to</span><span class="w"> </span><span class="nv">reverse</span><span class="w"> </span><span class="k">break</span><span class="o">-</span><span class="nv">pane</span>.
</pre></div>
</blockquote>
<p>Yes - so this gives us nothing.</p>
<p>So - lurking through the horizon of the internet I found
<a href="https://forums.pragprog.com/forums/242/topics/10533">this</a>:</p>
<p>So it looks like the full path takes 2 arguments: window_number.pane_number</p>
<p>So yes - bindings are still valid but instead entering single window number we
should enter exact location like <strong>1.3</strong> (assuming you got at least 2 panes in
1 window)</p>
<p>Yes - this was not that obvious</p>IT night 2014 recap & slides2014-06-01T00:00:00+02:002014-06-01T00:00:00+02:00Maciej Lasyktag:maciej.lasyk.info,2014-06-01:2014/Jun/01/it-night-2014-recap-slides/<p><center><img alt="IT night" src="https://maciej.lasyk.info/images/it-night-2014.jpg" /></center></p>
<p>First of all – this is a coolest event badge ever. Seriously – it’s awesomeness is about zoundsss! Thanks guys again for that!</p>
<p>So this night is over, I think we all had already enough sleep and now we’re able to do some recap. First of all – hard to say for me but this was my first IT night; somehow it happened that I couldn’t make it earlier (7 years to narrow it as this was 8th edition – lol). What was this night about? Everything that was somehow connected to IT topics; there were gaming consoles, Linux Millionaire – like trivia, throwing HDDs challenge, assembling PC challenge etc – all the things we did and we love or hate :) And of course – there were many talks given by awesome people (lol – including me) ;) But honestly – every one person who attended this night was really awesome – We could talk a lot with almost everyone and did not get bored :)</p>
<p>So – if you weren’t there – regret this all 365 following days and register to the next edition – it’s really a must – be event :) And for organizers – guys – you did a tremendous and great job – thank you for that!</p>
<p>My talk was about living and working in terminal. You can find this on Slideshare (embedded below). I also created GitHub project where I will develop those topics through the time. Wanna help? No prob – just ping me somehow ;)</p>
<iframe src="//www.slideshare.net/slideshow/embed_code/key/1I8PZ52Sy9RymK" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe>
<p><div style="margin-bottom:5px"> <strong> <a href="//www.slideshare.net/d0cent/ghost-intheshell" title="Ghost in the shell" target="_blank">Ghost in the shell</a> </strong> from <strong><a href="https://www.slideshare.net/d0cent" target="_blank">Maciej Lasyk</a></strong> </div></p>