lauantai 9. joulukuuta 2023

Pikanäppäimiä

Olen vuosien varrella määritellyt pikanäppäimiä graafisella työpöydällä usein tarvittaviin toimintoihin. Tässä oma listani tarpeellisista pikanäppäimistä!

Näppäin Toiminto
F1 Näytä tai piilota Tilda (Linux) tai ConEmu (Windows)
F2 LibreOffice taulukkolaskenta: muokkaa solun kaavaa tai sisältöä
Thunar: nimeä tiedosto uudelleen
F3 Laske aktiivinen tai hiiren alla oleva ikkuna alimmaiseksi
F4 Nosta aktiivinen tai hiiren alla oleva ikkuna päällimmäiseksi
F5 LibreOffice taulukkolaskenta: lisää rivi alapuolelle
PhpStorm: suorita koodi
F6 Minimoi aktiivinen tai hiiren alla oleva ikkuna
F7 Avaa Thunar -tiedostoselain (Linux) tai File Explorer (Windows)
F8 Avaa XFCE4 -pääte
F9 LibreOffice taulukkolaskenta: poista rivi
F11 Maksimoi aktiivinen ikkuna koko ruudulle
F12 Chrome + Firefox: avaa kehittäjän työkalut
Alt+F1 Sijoita aktiivinen ikkuna ruudun vasemaan reunaan
Alt+F2 Sijoita aktiivinen ikkuna ruudun oikeaan reunaan
Alt+Tab Vaihda kahden viimeksi käytetyn graafisen sovelluksen välillä
PrtScn Suurenna pala ruutua Xmag -ohjelmalla
Ctrl+PrtScn Ota kuvakaappaus XFCE4 Screenshooter -ohjelmalla
Ctrl+Space Käynnistä uusi ohjelma XFCE4 Appfinder -ohjelmalla (Linux) tai PowerToys -ohjelmalla (Windows)

XFCE4:ssä omat näppäinmääritykset pystyy tekemään suoraan ikkunointiohjelman ja näppäimistön asetuksissa.

Windowsille suosittelen asentamaan PowerToys -ohjelman. PowerToysilla saa ohjelmoitua näppäinkomentoja uudelleen siten, että esimerkiksi painettaessa Alt+F1 järjestelmä käyttäytyy ikään kuin olisi painettu Win+Left. Omassa näppäimistössäni irrotin Windows-näppäimet kokonaan vahinkolyöntien välttämiseksi, joten Windowsin normaalit pikanäppäimet ovat vaikeasti käytettävissä: Windows-näppäintä pystyy painamaan vain pikkusormella suoraan ylhäältäpäin.

Bashissa käytän pikanäppäimiä:

Näppäin Toiminto
Ctrl+D Lähetä EOF (sulkee terminaalin tai syötettä odottavan ohjelman)
Ctrl+P Hae komentohistoriasta edellinen komento kursorin vasemmalla puolella olevalla sanalla
Ctrl+N Hae seuraava komento kursorin vasemmalla puolella olevalla sanalla
Ctrl+A Kursori rivin alkuun
Ctrl+E Kursori rivin loppuun
Ctrl+B Kursori edellisen sanan alkuun
Ctrl+F Kursori seuraava sanan loppuun
Ctrl+W Leikkaa edellinen sana ja lisää se puskuriin
Ctrl+Y Liitä leikatut sanat puskurista

Vimissä ja Tmuxissa minulla on myös omia pikanäppäimiä, mutta niistä lisää joku toinen kerta.

keskiviikko 11. lokakuuta 2023

Kuka kaipaa NULL-pointteria??

Chris Wellons kirjoittaa blogissaan, että C-kielen NULL-vakio on täysin tarpeeton ja että numero 0 toimii sen tilalla lähes aina:

Literal 0 for null pointers. Short and sweet. This is not new, but a style I’ve used for about 7 years now, and has appeared all over my writing since. There are some theoretical edge cases where it may cause defects, and lots of ink has been spilled on the subject, but after a couple 100K lines of code I’ve yet to see it happen.

NULL-vakio on oleellinen osa C-kielen opetusta ja esimerkkikoodeja, joten en ollut aiemmin kyseenalaistanut sen tarpeellisuutta! Koodi kuitenkin toimii jopa aiempaa yksinkertaisemmin, jos NULL-vakion korvaa numerolla nolla. NULL-vakio on määritelty stddef.h-tiedostossa, joka pitää muistaa lukea #includella mukaan, jos tiedostossa haluaa käyttää NULL-vakiota. NULL-vakion käyttö ilman, että stddef.h tiedosto tulee mukaan jotain kautta johtaa käännösvirheeseen!

Aion jatkossa käyttää numeroa nolla NULL-vakion sijasta!

perjantai 21. heinäkuuta 2023

Thunderbird 115

Thunderbirdistä julkaistiin pari viikkoa sitten versio 115, joka uudisti ulkoasun täysin! Uusi Thunderbird mm. sijoittaa työkalupalkin valikkopalkin päälle1:

Tämä asettelu sopii ehkä Gnome-työpöytäympäristöön, missä toimintoja on jo aiemmin karsittu ja siirretty sovelluksen sisältä ikkunan yläpalkkiin, mutta esimerkiksi XFCE-työpöytäympäristössä Thunderbird 115 pistää ikävästi silmään! Henkilökohtaisesti pidän, että valikkopalkki näkyy ja löytyy kaikissa sovelluksissa samassa kohtaa, vaikka sitä ei aina käytäkkään. Toivon, että Thunderbirdiin tulee myöhemmin mahdollisuus vaihtaa valikko- ja työkalurivin paikkaa käyttäjäkohtaisella asetuksella!

Käyttöliittymän yllättävä muutos oli hyvä syy katsoa, mitä muita sähköpostiohjelmia on tarjolla. Aionkin kokeilla Thunderbirdin korvaajaksi Gmail-sovellusta kännykässä ja Mutt-sähköpostiohjelmaa tietokoneella. Muttin suurin etu on, että sähköpostit voi kirjoittaa itselle tutulla tekstieditorilla, esimerkiksi Vimillä.

Thunderbirdissä hyvää oli automaattiset viestisuodattimet. Omalla viestisuodattimella pystyi esimerkiksi ohjaamaan sähköpostilaskut/kuitit suoraan kirjanpitäjälle tai poistamaan aiheettomat kuittausviestit tarvitsematta ikinä nähdä niitä. Muttille joudun vielä etsimään korvaavaa tapaa...

Päivitys 21.7.2023: Redditissä on jo korjaus valikkopalkin järjestykseen! Samalla systeemillä saa piilotettua tilat-painikkeen, poistettua turhaa tilaa ja muokattua muutenkin ulkoasua mieleisekseen. Thunderbird on taas nätti ❤️❤️

Uudessa Thunderbirdissä pyörii Firefoxin moottori, jonka ansiosta kaikkia käyttöliittymän ominaisuuksia voi säätää CSS:llä. Itse sain vanhan ulkoasun takaisin ja enemmän CSS-määreillä:

/* Näytä valikkopalkki ylimpänä */
#toolbar-menubar {
    order: -1 !important;
    border-left: 2px solid #ececec !important;
    border-top: 2px solid #ececec !important;
    border-right: 2px solid #4c4c4c !important;
    border-bottom: 2px solid #4c4c4c !important;
}

/* Poista ylimääräinen tyhjä tila työkalupalkin napeista */
unified-toolbar {
    border-bottom: 0 !important;
}
#unifiedToolbar {
    padding: 0 !important;
    border-left: 2px solid #ececec !important;
    border-top: 2px solid #ececec !important;
    border-right: 2px solid #4c4c4c !important;
    border-bottom: 2px solid #4c4c4c !important;
}
#unifiedToolbar .unified-toolbar-button {
    margin: 1px !important;
}
#unifiedToolbar .unified-toolbar-button:hover {
    border-color: transparent !important;
    background-color: #ececec !important;
    border-radius: 0 !important;
}

/* Piilota tilat-painike työkalupalkista */
#spacesPinnedButton {
    display: none
}

/* Näytä viestin metatiedot harmaalla taustalla */
#messageHeader {
    background: #c1c1c1;
}

/* Viestin taustaväri */
#messagePane {
    background: #fff !important;
}

/* Väritä viestiluettelon sarakeotsikot */
#threadTree .tree-table-header .tree-table-cell {
    padding-bottom: 2px !important;
}
#threadTree .tree-table-header th {
    background-color: black !important;
}
#threadTree .tree-table-header th button {
    border-left: 1px solid #ececec !important;
    border-top: 2px solid #ececec !important;
    border-right: 1px solid #4c4c4c !important;
    border-bottom: 2px solid #4c4c4c !important;
    background-color: #999999 !important;
    margin: 1px 0 !important;
    padding-top: 4px !important;
    padding-bottom: 4px !important;
}
#threadTree .tree-table-header th#attachmentCol .tree-table-cell-container {
    padding-left: 1px !important;
}
#threadTree .tree-table-header th#attachmentCol button {
    border-left: 2px solid #ececec !important;
}
#threadTree .tree-table-header th:last-child button {
    border-left: 1px solid #ececec !important;
    border-top: 2px solid #ececec !important;
    border-right: 2px solid #4c4c4c !important;
    border-bottom: 2px solid #4c4c4c !important;
    width: calc(100% - 1px) !important;
    height: calc(100% - 2px) !important;
}
#threadTree th hr {
    border: none !important;
}

/* Valittu rivi sinisellä */
[is="tree-view-table-body"]:focus tr[is="thread-row"].selected,
[is="tree-view-table-body"]:focus-within tr[is="thread-row"].selected,
[is="tree-view-table-body"] tr[is="thread-row"].selected:focus-within {
    background-color: #000080 !important;
}
#folderTree:focus-within li.selected > .container,
#folderTree li.drop-target > .container {
    background-color: #000080 !important;
}

/* Piilota työkalupalkki sivun keskellä */
#header-view-toolbox {
    display: none !important;
}

/* Poista ylimääräinen tyhjä tila varoituksen ympäriltä */
notification-message {
    margin: 0 !important;
}

/* Poista mustat viivat sivun ero osien väliltä */
#folderPaneSplitter {
    border: 0 !important;
    margin: 0 !important;
    width: 6px !important;
}
#messagePaneSplitter {
    border: 0 !important;
    margin: 0 !important;
    height: 6px !important;
}
#mail-notification-top {
    border-bottom: 0 !important;
}
#attachmentView {
    border-top: 0 !important;
}

/* Älä muuta tekstin väriä, kun hiiri siirtyy pois ikkunasta */
#titlebar > #toolbar-menubar:-moz-window-inactive,
#titlebar > #tabs-toolbar:-moz-window-inactive {
    color: black !important;
}
:is(.live-content, .button-appmenu, #spacesPinnedButton):-moz-window-inactive {
    opacity: 1.0 !important;
}

/* Piirrä liitepalkki harmaalla taustalla*/
#attachmentBar {
    background: #c1c1c1 !important;
}

CSS-määreet löytää kohtalaisen helposti Thunderbirdin kehittäjätyökalujen avulla.

1. Tässä näkymässä kansiopuun ja viestilistauksen otsikkorivi on piilotettu, ikkunointijärjestelmän kehykset on otettu käyttöön ja ruudun asetteluksi on muutettu perinteinen. Thunderbirdin oletusasetuksissa työkalurivillä on myös vähemmän painikkeita - tässä näkyvät painikkeet olin itse lisännyt aiempaan Thunderbirdin versioon.

lauantai 13. toukokuuta 2023

Samba-tiedostonjako Arch-Linuxille

Tämä teksti on päivitys 2011 julkaisemaani Samba-tiedostonjaon asennusohjeeseen. Vaikka aikaa on kulunut, niin Samba on edelleen paras tapa jakaa tiedostoja Linux- ja Windows-koneiden välillä.

Asenna Samba-palvelin Arch-Linuxille komennolla:

sudo pacman -S samba

Siirry hakemistoon /etc/samba ja luo asetustiedosto smb.conf komennolla (lue Vi-editorin pikaohje sivupalkista):

cd /etc/samba sudo vim smb.conf

Kirjoita tiedostoon koodi:

[global]
netbios name = arch
workgroup = TUXNET
server string = Arch Linux
server role = standalone server
log file = /var/log/samba/samba.log
max log size = 50
guest account = nobody
map to guest = Bad User
security = user
browseable = yes

[homes]
browseable = no
read only = no
create mask = 0700
directory mask = 0700
valid users = %S

Tarkista tiedoston formaatti komennolla:

sudo testparm -s

Jos kaikki on OK, niin käynnistä Samba-palvelin komennoilla:

sudo systemctl start smb

Luo itsellesi Samba-käyttäjä komennolla:

sudo smbpasswd -a NIMI

missä NIMI on Unix-käyttäjänimi.

Samba on nyt käyttövalmis, mutta levyn liittäminen Windowsissa on hankalaa. Lataa Wsdd2-nimipalvelu ja asenna se komennoilla:

gunzip -c wsdd2.tar.gz | tar xf - cd wsdd2 makepkg -i

Käynnistä wsdd2 komennolla:

sudo systemctl start wsdd2

Siirry Windows-koneelle ja avaa tiedostoselain. Palvelin ARCH pitäisi nyt näkyä Windowsin verkko-osiossa (Network).

Tuplaklikkaa palvelimen nimeä, valitse vaihtoehto kirjaudu käyttäen toista käyttäjänimeä ja kirjaudu sisään palvelimen käyttäjätunnuksella ja salasanalla.

Aseta lopuksi Samba ja Wssd2-palvelu käynnnistymään automaattisesti aina kun Linux-palvelin käynnistetään:

sudo systemctl enable smb sudo systemctl enable wssd2

Lisätietoja Sambasta saat Arch-Linuxin sivuilta.

tiistai 21. helmikuuta 2023

Mac Mini

Tarvitsen työn puolesta Applen tuotteita satunnaisesti, ja olen siksi hankkinut Mac Minin. Macissäni on kaksiytiminen 1,4 GHz Intel Core i5 prosessori, 4 gigatavua 1600 Mhz muistia ja 5400 RPM kiintolevy. Näillä spekseillä Macin käyttö on yhtä tuskaa: ohjelman avautumisen tai minkä tahansa napin painamisen jälkeen saa odotella kymmeniä sekunteja ennen kuin mitään tapahtuu!

Epäilen yhdeksi syyksi hidasteluun Applen warmd-prosessia, jonka pitäisi lämmittää välimuistit koneen käynnistyksen jälkeen. Warmd on ehkä hyödyllinen uudemmpissa SSD-massamuisteja käyttävissä Maceissa, mutta saattaa hidastaa perinteisiä kiintolevyjä käyttäviä vanhempia Maccejä.

Omassa koneessani ongelmana näyttää olevan nimenomaan kiintolevyn käyttö: koneen prosessori näyttää vain noin 10% käyttöastetta odottelun aikana. Macin käynnistyksen yhteydessä warmd lukee noin 1,8 gigatavua dataa kiintolevyltä:

Macin 5400 RPM kiintolevy kykenee parhaimmillaan lukemaan tai kirjoittamaan dataa 40-50 megatavua sekunnissa, jolloin teoriassa warmd:n ei pitäisi hidastaa koneen käynnistystä minuuttia pidempään. Käytännössä Mac kuitenkin tahmoo huomattavasti pidempään. Warmd:n sammuttaminen auttaa käynnistämään Macin nopeammin!

Warmd:stä pääsee hetkeksi eroon komennoilla:

sudo launchctl disable system/com.apple.warmd sudo launchctl kill -9 system/com.apple.warmd

Valitettavasti warmd tulee kuitenkin takaisin seuraavan käyttöjärjestelmäpäivityksen yhteydessä. Siihen en ole vielä keksinyt korjausta!

sunnuntai 19. helmikuuta 2023

Linux-konsolin värit

Asensin äskettäin mutt-sähköpostiohjelman Linux-konsoliin. Samalla huomasin, miten ohjelman värit vaihtuivat käyttämästäni päätteestä ja sen asetuksista riippuen: graafisella työpöydällä Tildan ja Tmuxin alla ajettuna värit olivat kirkkaamman kuin Linux-konsolissa!

Linux-konsolin värikartta sisältää 16 väriä tekstille ja 8-väriä taustalle:

Linux-konsolin värikarttaa ei voi muokata kääntämättä omaa Linux-ydintä! Sen sijaan Tilda ja muut päätteet sisältävät useita erilaisia värikarttoja ja antavat auliisti vaihtaa värikartan toiseen. Tildan värikartoista Linux console vastaa Linux-konsolia:

XFCE4-päätteessä vihreä mustalla vastaa Linux-konsolia:

Värikartan lisäksi tekstin oletusväri voi aiheuttaa värieroja. Oletusväriä käytetään kaikessa tekstissä, mitä ei ole erikseen maalattu tietyllä värillä. Jos oletusväriä ei ole asetettu samaksi, niin tavallisten Linux-komentojen tulosteet näyttävät eri värisiltä eri päätteillä!

Tekstin oletusvärin saa korjattua täsmälleen samaksi Tildan ja XFCE4-päätteen asetuksissa syöttämällä RGB-värikoodin. Suosittelen valitsemaan oletusvärin alla olevasta Linux-konsolin värikartasta:

Nro Väri RGB-koodi
0 Musta 000000
1 Punainen AA0000
2 Vihreä 00AA00
3 Ruskea AA5500
4 Sininen 0000AA
5 Violetti AA00AA
6 Turkoosi 00AAAA
7 Vaaleanharmaa AAAAAA
8 Tummanharmaa 555555
9 Kirkkaanpunainen   FF5555
10 Kirkkaanvihreä 55FF55
11 Keltainen FFFF55
12 Vaaleansininen 5555FF
13 Vaaleanvioletti FF55FF
14 Vaaleanturkoosi 55FFFF
15 Valkea FFFFFF

Linux-konsolissa oletusväri on vaaleanharmaa (väri 7), mutta värin voi vaihtaa ANSI-koodilla. Linux-konsolissa oletusvärin voi asettaa kaikille käyttäjille muokkaamalla /etc/issue tiedostoa tai itselleen muokkamalla .bashrc-tiedostossa komentokehotteen esimerkiksi muotoon:

PS0='\[\033[00;32;40m\033[8]\]'
PS1='\[\033[97m\]\u@\h\[\033[00m\] \[\033[97m\]\W\[\033[92m\]> '

PS0-kehote tulostuu juuri ennen suoritettavaa komentoa. Kehotteessa koodi \033[00;32;40m vaihtaa tekstin väriksi tummanvihreän (väri 2) ja koodi \033[8] asettaa sen oletusväriksi. PS1-kehote sisältää varsinaisen komentokehotteen, joka tulostaa käyttäjänimen (\u), palvelimen nimen (\h) ja nykyisen työhakemiston (\W) valkealla värillä (\033[97m). Lopuksi PS1-kehote valitsee kirkkaanvihreän tekstin (\033[92m), jolla varsinainen komento syötetään.

Jos käytät Linux-consolissa Tmuxia, niin muuta vielä .dircolors tiedostoon rivi:

RESET 00;32;40 # reset to "normal" color

Tämä varmistaa, että valitsemasi oletusväri (tässä vihreä) säilyy myös Tmuxin alla.

Kun rakennat teemoja konsoliohjelmille, niin ota huomioon, että Linux-konsolista poiketen Tilda ja XFCE4-terminaali tukevat kirkkaita taustavärejä:

Omissa teemoissa kannattaa valita taustaväri 0-7, jotta ohjelman värit ovat samanlaisen Linux-konsolissa ja graafisessa ympäristössä!