Klockan i panelen

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Klockan i panelen

Inlägg av Johnny Rosenberg »

Höll på här och försökte ändra hur tiden ska representeras (i Ubuntu 12.04), eftersom jag inte är nöjd med att den visas enligt svensk standard: HH.MM.SS. Jag vill se den i ISO8601-format istället: HH:MM:SS. Sedan vill jag absolut inte se datumet i textformat (förutom veckodag), som nuvarande ”tis jan 1 17.43”. Vill hellre ha: ”tisdag 2013-01-01 17:43:44”.

Så jag letade en del på nätet och hittade lite information. Inte helt korrekt sådan, men efter lite fipplande kom jag fram till ungefär hur man ska gå tillväga.

Först skapade jag en kopia av ”/usr/share/i18n/locales/sv_SE”. Kopian kallade jag ”custom”. Alla ändringar gjorde jag i denna fil.

Datum- och tidsformaten i ”custom” står i hex-kod, exempelvis <U0020> för mellanslag. Lite jobbigt att läsa, så jag gjorde följande två skript för att enkelt kunna konvertera mellan de olika formaten (förutsätter att det är exakt fyra siffror i hex-koden, men det verkar det vara i hela filen):

~/bin/LocaleHex2Char

Kod: Markera allt

#!/bin/bash

a=$(echo -en "$1" | sed 's/<U\([0-9A-F]\{4\}\)>/\\u\1/g')
$(echo "printf ${a}") | xclip -selection clipboard
$(echo "printf ${a}\n")
Man behöver installera xclip först, om man inte redan gjort det:

Kod: Markera allt

sudo apt-get install xclip
Argumentet har man inom citattecken när man kör skriptet och resultatet hamnar i urklipp och kan klistras in med Ctrl+c i exempelvis Gedit.
Exempel:

Kod: Markera allt

~$ LocaleHex2Char "<U0025><U0061><U0020><U0025><U0065><U0020><U0025><U0062>+<U0020><U0025><U0059><U0020><U0025><U0048><U002E><U0025><U004D><U002E>+<U0025><U0053><U0020><U0025><U005A>"
%a %e %b+ %Y %H.%M.+%S %Z
~$
~/bin/LocaleChar2Hex

Kod: Markera allt

#!/bin/bash

echo -n "$1" | hexdump -e '/1 "<U%04X>"' | xclip -selection clipboard
echo -n "$1" | hexdump -e '/1 "<U%04X>"'
echo
Samma sak där: Argumentet inom citattecken:

Kod: Markera allt

~$ LocaleChar2Hex "%A %Y-%m-%d %H:%M"
<U0025><U0041><U0020><U0025><U0059><U002D><U0025><U006D><U002D><U0025><U0064><U0020><U0025><U0048><U003A><U0025><U004D>
~$
Även här hamnar resultatet i urklipp.

Givetvis kan man skriva skripten så att de blir både snyggare och snabbare och så vidare, men det skiter väl jag i…

Skripten var i alla fall till stor nytta när jag ville veta vilka datumformat man använt och när jag skulle byta ut dem mot mina egna. Vad de olika koderna (%A och så vidare) betyder får man enkelt fram med:

Kod: Markera allt

man date
När filen (”custom”) är klar, räcker det ju inte med det, systemet måste ju veta att den finns:

Kod: Markera allt

sudo localedef -f UTF-8 -i custom custom.UTF-8
Och givetvis räcker det inte med detta, utan man måste ju få systemet att använda den också. Då finns en fil som heter ”/etc/environment”, men det visade sig att det finns en lokal fil som körs efter denna fil, så det mesta som står där är bara något sorts standardvärden om den lokala filen saknas, verkar det som. Den lokala filen heter ”~/.pam_environment”.
I den bytte jag bara ut alla ”sv_SE” mot ”custom” i hela filen, så min ser numera ut så här (jag kopierade först originalfilen till ”~/.pam_environment.original” – alltid bra att ha kvar originalfilerna om något skulle skita sig):

Kod: Markera allt

LC_NUMERIC=custom.UTF-8
LC_TIME=custom.UTF-8
LC_MONETARY=custom.UTF-8
LC_PAPER=custom.UTF-8
LC_NAME=custom.UTF-8
LC_ADDRESS=custom.UTF-8
LC_TELEPHONE=custom.UTF-8
LC_MEASUREMENT=custom.UTF-8
LC_IDENTIFICATION=custom.UTF-8
Logga ut och logga in igen, så ska saker och ting ha ändrat sig. Exempelvis har jag ändrat standardformatet för datum och tid:

Kod: Markera allt

~$ date
tisdag 2013-01-01 18:03
~$ 
MEN! Klockan i panelen visar fortfarande ”tis jan 1 18:03”. Det enda som hänt är att punkten i klockslaget blivit ett kolon (osäker på varför, när inget annat ändrats). Så frågan är vilken fil som panelens klocka använder sig av för att få fram hur tiden ska visas. Man kan ju göra enklare förändringar i en dialogruta, exempelvis få sekunder, 12-timmarstid och så vidare, men inte välja hur datum ska visas, vilket jag vill göra.

Så jag har kommit en liten bit på vägen men inte nått ända fram. Någon som kan assistera mig vidare från denna position?
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Klockan i panelen

Inlägg av Johnny Rosenberg »

Löste det men förstår ändå inte riktigt det jag vill förstå.
Lösningen blev att installera dconf-editor och göra följande ändringar:
  • com → canonical → indicator → datetime → time-format=custom
  • com → canonical → indicator → datetime → custom-time-format=%A %Y-%m-%d %H:%M
Detta förstår jag dock inte:
Om jag väljer ”com → canonical → indicator → datetime → time-format=locale-default” får jag ”tis jan 1 18:51”, men var finns detta default-värde lagrat? Inte i de filer jag fipplat med i alla fall, vad jag kunnat se.

Vilka filer är det som redigeras när man kör dconf-editor? Känns lite svajigt, detta, särskilt som att formatet inte ändrade sig förrän efter andra körningen av dconf-editor, när jag däremellan loggat ut och in igen. Tror jag…
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Klockan i panelen

Inlägg av Johnny Rosenberg »

Jag har ju fortfarande inte fått svar på de viktigaste frågorna, men jag får väl markera tråden som löst ändå eftersom jag nu har rätt datum- och tidformat i panelen.

Kanske lika gärna kunde ta bort tråden helt, i och för sig. Jag verkar ändå vara den ende som funderar över smådetaljer som denna (om inte rent av den ende som besöker detta forum över huvud taget), men eftersom jag inte hur man tar bort sina trådar så skippar jag väl det då.
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Skriv svar

Återgå till "Terminalforum"