slapovski (slapovski) wrote in ru_mac,
slapovski
slapovski
ru_mac

GeekTool и познания в скриптовых языках

Недавно заинтересовался утилитой geektool, к тому же в поиске подвернулась "русификация" этой утилиты от уважаемого ay5. Настроил много всего, разобрался почему cal не хочет выводить календарь как надо мне. С календарем разобрался, русский гиктул поставил. Появилась одна закавыка. Мне стало интересно, можно ли в выводе команды:

ncal -s RU -w

"подсветить" каким-либо образом (например подчеркиванием) текущее число. Если в этом сообществе есть сильные (ну или не очень:)) скриптовики — пособите скриптом. Тем более всем на пользу пойдет. Не только мне :).
ЗЫ. Да, кстати, даже с русским geektol календарь выводится с английскими названиями дней недели. Можно ли что-нибудь подкрутить?

UPD: Благодаря keruah нашелся-таки более-менее приемлемый способ, отображения текущей даты. Этот способ постараюсь докрутить под себя и выложить сюда же или отдельным постом. Если конечно же получится что-нибудь (мне нужны дни недели).

Теперь еще один вопрос: а что еще, вы, уважаемые пользователи, любите смотреть время от времени на рабочем столе? Желательно при помощи гиктул :). Кроме календаря, я смотрю: название вайфай сети, IP адреса аирпорта, езернета и внешний, свободое место на диске и время аптайма. Также знаю способ вывода инфы по проигрываемой песне в итюнсе (вплоть до обложки диска). Что можно еще делать c этой замечательной программулькой (да! я проперся от нее! :))

UPD2: Нашел способ красить цветом вывод в терминале. Загвоздка в том, что в гиктул не работает. Команда такая:
esc=`echo e | tr e '\033'`;bright="${esc}[31;40m";nobright="${esc}[37;40m";cal | sed "s/ $(date +%e) / `echo "${bright}##${nobright}"` /"

Под катом выложены уже готовые "рецепты"

1. Свободное/занятое место на жестком диске

df -h /|tail -1| awk '{ print "HDD: "$4" free and "$3" used" }'

можно сделать и так, чтобы иметь возможность смотреть на разных разделах:

df -h | grep disk0s2 | awk '{print "Disk:", $3, "/", $2, "-", $4, "available"}'


2. Время аптайма, количество занятых ресурсов (память, процессор):

uptime | awk '{print "UPTIME : " $3 " " $4 " " $5 }' | sed -e 's/.$//g'; top -l 1 | awk '/PhysMem/ {print "RAM : " $8 " "}' ; top -l 2 | awk '/CPU usage/ && NR > 5 {print $6, $7=":", $8, $9="user ", $10, $11="sys ", $12, $13}'

3. Инфа по cетевым интерфесам (надо все засунуть в скрипт и через гиктул запускать скрипт)

#!/bin/sh
myvar1=`system_profiler SPAirPortDataType | grep -e "Current Wireless Network:" | awk '{print $4}'`
myvar2=`system_profiler SPAirPortDataType | grep -e "Wireless Channel:" | awk '{print $3}'`
ip=`ifconfig en1 | grep "inet " | grep -v 127.0.0.1 | cut -d ' ' -f2`
echo "Wi-Fi Network: $myvar1"
echo "Channel : $myvar2"

myen1=`ifconfig en1 | grep "inet " | grep -v 127.0.0.1 | awk '{print $2}'`
if [ "myen1" != "" ]
then
echo "AirPort : $myen1"
else
echo "Airport : INACTIVE"
fi

myen0=`ifconfig en0 | grep "inet " | grep -v 127.0.0.1 | awk '{print $2}'`
if [ "$myen0" != "" ]
then
echo "Ethernet : $myen0"
else
echo "Ethernet : INACTIVE"
fi

echo `curl --silent http://checkip.dyndns.org | awk '{ split($6,dst,/[<]/); print "External : " dst[1]; }'`


4. Мегаинтересная информация о том как сделать себе календарь с напоминаниями на лайфхакере
5. Колдуем над итюнс (правда я еще не пробовал делать) -
создаем скрипт, например iTunesInfo.scpt:
запустить его можно с помощью команды

osascript /Users/XXXXXX/Pictures/iTunes Artwork/iTunesInfo.scpt

Скрипт такой:
tell application "System Events"
    set powerCheck to ((application processes whose (name is equal to "iTunes")) count)
    if powerCheck = 0 then
        return ""
    end if
end tell
tell application "iTunes"
    try
        set playerstate to (get player state)
    end try
    if playerstate = paused then
        set trackPaused to " (paused)"
    else
        set trackPaused to ""
    end if
    if playerstate = stopped then
        return "Stopped"
    end if
    set trackID to the current track
    set trackName to the name of trackID
    set artistName to the artist of trackID
    set albumName to the album of trackID
    set totalData to "Track  : " & trackName & trackPaused & "
Artist : " & artistName & "
Album  : " & albumName
    return totalData
end tell
6. Ну и наконец показ артворка:
для этого делаем в гиктуле два Entry (не знаю как в данном контексте перевести). Одно entry - для запуска скрипта:
osascript /Users/
XXXXXXXXX/Pictures/iTunes Artwork/iTunesArtwork.scpt
Другое для показа картинки, которую этот скрипт готовит:
file:///Users/XXXXXXXXX/Pictures/iTunes%20Artwork/albumArt.tif
Сам скрипт выглядит примерно таким образом, но его надо немного заточить:
(* Set Defaults and Loctions *)

set iTunesArtworkFolder to ((path to home folder) as text) & "Pictures:iTunes Artwork:"
-- Artwork Folder

set DefaultArtwork to ((path to home folder) as text) & "Pictures:iTunes Artwork:Default:albumArt.tif"
-- When there's no artwork or iTunes isn't running. This is a transparent TIFF.

set DefaultFolder to ((path to home folder) as text) & "Pictures:iTunes Artwork:Default:"
-- Default Folder

set FromiTunesFolder to ((path to home folder) as text) & "Pictures:iTunes Artwork:From iTunes:"
-- Where iTunes saves the Artwork

set ArtworkFromiTunes to FromiTunesFolder & "albumArt.pict" as file specification
-- The Artwork from iTunes

set AlbumArtwork to (path to home folder) & "Pictures:iTunes Artwork:albumArt.tif" as string
-- The Album Artwork

set UnixAlbumArtwork to the quoted form of POSIX path of AlbumArtwork
-- Unix path to the Album Artwork


(* Check if iTunes is running. *)

tell application "System Events"
    if exists process "iTunes" then
        try
           
            (* Get Artwork From iTunes *)
            tell application "iTunes"
                set aLibrary to name of current playlist -- Name of Current Playlist
                set aTrack to current track
                set aTrackArtwork to null
               
                (* Is there any Artwork? *)
                if (count of artwork of aTrack) ≥ 1 then
                    set aTrackArtwork to data of artwork 1 of aTrack
                    set fileRef to (open for access ArtworkFromiTunes with write permission)
                    try
                        set eof fileRef to 512
                        write aTrackArtwork to fileRef starting at 513
                        close access fileRef
                    on error errorMsg
                        try
                            close access fileRef
                        end try
                        error errorMsg
                    end try
                   
                    (* Convert to Tiff *)
                    tell application "Finder" to set creator type of ArtworkFromiTunes to "????"
                   
                    tell application "Image Events"
                        set theImage to open ArtworkFromiTunes
                        save theImage as TIFF in iTunesArtworkFolder & "albumArt.tif" with replacing
                    end tell
                   
                else
                   
                    (* If there's no Artwork use the Blank Arwork. *)
                    tell application "iTunes"
                        if (count of artwork of aTrack) < 1 then
                            set aTrackArtwork to DefaultArtwork
                           
                           
                            set unixDefaultFolder to the quoted form of POSIX path of DefaultFolder
                            set unixiTunesArtworkFolder to the quoted form of POSIX path of iTunesArtworkFolder
                           
                            do shell script "ditto -rsrc " & unixDefaultFolder & space & unixiTunesArtworkFolder
                           
                        end if
                    end tell
                end if
            end tell
        end try
       
    else
        if (exists process "iTunes") is false then
           
            (* If itunes isn't running use the Blank Artwork *)
            tell application "Finder"
                set unixDefaultFolder to the quoted form of POSIX path of DefaultFolder
                set unixiTunesArtworkFolder to the quoted form of POSIX path of iTunesArtworkFolder
               
                do shell script "ditto -rsrc " & unixDefaultFolder & space & unixiTunesArtworkFolder
            end tell
           
        end if
    end if
end tell


Ну и в заключении могу сказать что все скрипты, которые указаны, кроме 5, 6. Работают As-Is и проверены на мне. Все скрипты были взяты из инета, некоторые подверглись небольшим изменениям.
В комментах делитесь своими плодами изысканий.
Tags: software (общие вопросы ПО)
Subscribe
  • Post a new comment

    Error

    Comments allowed for members only

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 21 comments