Clock-CLI (Test)

アプリ

README_EN.md

⏰ Clock

Windows
Linux
macOS
Simple Clock App for Windows Vista / 7 / 8 / 8.1 / 10 / 11 / Linux x64 / Linux Arm / Linux Arm64 / Linux Bionic Arm64 / OSX Arm64 (Apple Silicon) / OSX x64 (Intel CPU, 10.12 or later)
🌱 **Memory Usage 20-30MB / Runs at a few percent of CPU! **
📦 Simple and fast clock


✅ Features

  • Lightweight design (20-30MB memory!)
  • Fast startup and operation
  • 🖥️ Simple UI
  • 🎨 Wide compatibility from Windows to MacOSX (10.12 and above)

💻 Supported Environments

OSCompatibility
.NET Framework 3.5 Windows Vista✅ Supported
.NET Framework 3.5 Windows 7✅ Supported
.NET Framework 3.5 Windows 8✅ Supported
.NET Framework 3.5 Windows 8.1✅ Supported
.NET Framework 3.5 Windows 10✅ Supported
.NET Framework 3.5 Windows 11✅ Support confirmed
.NET 8.0 Windows 10✅ Supported
.NET 8.0 Windows 11✅ Support confirmed (x64 only, x86 and Arm64 not tested)
.NET 8.0 Linux x64✅ Supported
.NET 8.0 Linux Arm✅ Supported
.NET 8.0 Linux Arm64✅ Support confirmed
.NET 8.0 Linux Bionic Arm64✅ Supported
.NET 8.0 Mac OSX Arm64 (Apple Silicon)✅ Supported
.NET 8.0 Mac OSX x64 (Intel CPU)✅ Supported
  • Windows XP is not supported (may work)
  • Mac OSX 10.12 and below are not supported
  • .NET 8.0 Windows 10 is Version 2004 (Build 19041) and below will not launch.

📷 Screenshot

Clock-CLI launching on Windows 11 (v1.0.0)
screenshot


🔧 Download

▶ Download the latest version here:
👉 https://sakuzyokun.github.io/Clock-CLI/


📜 License and Modification Information

You are free to modify and redistribute Clock!
However, please include the following statement in your README.md or the first comment in your source code:

// Clock-CLI was created by sakuzyokun

Also, please change the app icon when distributing it.


🙏 About Updates

Currently, updates are irregular.
We welcome bug reports and feedback, so please feel free to do so!


🔗 Links


© Sakuzyo-kun – 2026

README.md

⏰ Clock

Windows
Linux
macOS

🎨 特定の数字で色が変わるようになっています! 提案があったらIssuesに書いてね!

シンプル時計アプリ for Windows Vista / 7 / 8 / 8.1 / 10 / 11/ Linux x64 / Linux Arm / Linux Arm64 / Linux Bionic Arm64 / OSX Arm64(Apple Silicon) / OSX x64(Intel CPU, 10.12以上)
🌱 メモリ使用量 20〜30MB / CPU数%で動作!
📦 シンプル・高速な時計


✅ 特徴

  • 軽量設計(メモリ20〜30MB!)
  • 高速起動&動作
  • 🖥️ シンプルUI
  • 🎨 Windows~MacOSX(10.12以上) まで幅広く対応
  • 🖥️ Minimal 版 : サイズが固定されているWindows XP ~ Windows 8.1 のコマンドプロンプトや 解像度の低いPCにおすすめ

💻 対応環境

OS対応状況
.NET Framework 3.5 Windows XP✅ 対応確認済み
.NET Framework 3.5 Windows Vista✅ 対応
.NET Framework 3.5 Windows 7✅ 対応
.NET Framework 3.5 Windows 8✅ 対応
.NET Framework 3.5 Windows 8.1✅ 対応
.NET Framework 3.5 Windows 10✅ 対応
.NET Framework 3.5 Windows 11✅ 対応確認済み
.NET 8.0 Windows 10✅ 対応
.Net 8.0 Windows 11✅ 対応確認済み (x64のみ確認, Arm64未確認)
.NET 8.0 Linux x64✅ 対応
.NET 8.0 Linux Arm✅ 対応
.NET 8.0 Linux Arm64✅ 対応確認済み
.NET 8.0 Linux Bionic Arm64✅ 対応
.NET 8.0 Mac OSX Arm64 (Apple Silicon)✅ 対応
.NET 8.0 Mac OSX x64 (Intel CPU)✅ 対応

※ ~ Windows 2000 は非対応です
※ Macは OSX 10.12 以下は非対応です
※ Windows 10 で .NET 8.0 を動作させる場合 Version 2004 (Build 19041) 以下は起動しません


📷 スクリーンショット

Windows 11 で Clock-CLI を起動した様子 (v1.0.0)
screenshot


📦 実行方法

Linux の実行方法は特殊です

  1. ダウンロードしたファイルのフォルダに移動 (cd /home/ユーザー名/Download cd /home/ユーザー名/ダウンロード など)
  2. 実行権限を与える (chmod +x Clock-CLI_Linux*)
  3. 実行する (./Clock-CLI_Linux*)
    (もしかしたら Mac も同じかも?)

🔧 ダウンロード

▶ 最新版はこちらからダウンロード:
👉 https://sakuzyokun.github.io/Clock-CLI/


📜 ライセンス・改造について

Clockは自由に改造・再配布してOKです!
ただし、以下の一文をREADME.mdやソースコードの先頭コメント**に明記してください:

// Clock-CLI was created by sakuzyokun

また、アプリアイコンは配布する際、変更してください


🙏 更新について

現在は不定期更新です。
バグ報告やフィードバックは受け付けているので、お気軽にどうぞ!


🔗 リンク


© Sakuzyo-kun – 2026

Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace Clock_CLI
{
    internal class Program
    {
        static int lastWidth = Console.WindowWidth;
        static int lastHeight = Console.WindowHeight;

        static void Main(string[] args)
        {
            RunClock();
        }

        private static void RunClock()
        {

            while (true)
            {
                // リサイズ検知
                if (Console.WindowWidth != lastWidth ||
                    Console.WindowHeight != lastHeight)
                {
                    Console.Clear();
                    lastWidth = Console.WindowWidth;
                    lastHeight = Console.WindowHeight;
                }

                GetTime();
                Console.SetCursorPosition(0, 0);
            }
        }

        static void DrawProgressBar(double percent)
        {
            int barWidth = 100;
            int filled = (int)(percent / 100 * barWidth);

            Console.ForegroundColor = ConsoleColor.Green;
            Console.Write("Progress: [" + percent.ToString("0.0000") + "%]");

            Console.ResetColor();
            Console.Write(" [");
            for (int i = 0; i < barWidth; i++)
            {
                if (i < filled)
                {
                    Console.Write("#");
                }
                else
                {
                    Console.Write(".");
                }
            }
            Console.ResetColor();
            Console.Write("] ");
        }

        private static void GetTime()
        {
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine("Clock-CLI");
            
            DateTime localTime = DateTime.Now;
            string hour = DateTime.Now.ToString("HH");
            string minute = DateTime.Now.ToString("mm");
            string sec = DateTime.Now.ToString("ss");
            string millisec = DateTime.Now.ToString("fff");
            string year = DateTime.Now.Year.ToString();
            string month = DateTime.Now.ToString("MM");
            string day = DateTime.Now.ToString("dd");

            DateTime utc = DateTime.UtcNow;
            DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
            long unixSeconds = (long)(utc - epoch).TotalSeconds;
            long unixMillis = (long)(utc - epoch).TotalMilliseconds;

            string[] bigDigits = { "      \r\n ##   \r\n#  #  \r\n#  #  \r\n#  #  \r\n#  #  \r\n#  #  \r\n ##   \r\n      \r\n      \r\n      ", "      \r\n  #   \r\n ##   \r\n  #   \r\n  #   \r\n  #   \r\n  #   \r\n  #   \r\n      \r\n      \r\n      ", "      \r\n ##   \r\n#  #  \r\n   #  \r\n  #   \r\n #    \r\n#     \r\n####  \r\n      \r\n      \r\n      ", "      \r\n ##   \r\n#  #  \r\n   #  \r\n ##   \r\n   #  \r\n#  #  \r\n ##   \r\n      \r\n      \r\n      ", "      \r\n  ##  \r\n  ##  \r\n # #  \r\n # #  \r\n#  #  \r\n##### \r\n   #  \r\n      \r\n      \r\n      ", "      \r\n####  \r\n#     \r\n###   \r\n   #  \r\n   #  \r\n#  #  \r\n ##   \r\n      \r\n      \r\n      ", "      \r\n ##   \r\n#  #  \r\n#     \r\n###   \r\n#  #  \r\n#  #  \r\n ##   \r\n      \r\n      \r\n      ", "      \r\n####  \r\n   #  \r\n  #   \r\n  #   \r\n #    \r\n #    \r\n #    \r\n      \r\n      \r\n      ", "      \r\n ##   \r\n#  #  \r\n#  #  \r\n ##   \r\n#  #  \r\n#  #  \r\n ##   \r\n      \r\n      \r\n      ", "      \r\n ##   \r\n#  #  \r\n#  #  \r\n ###  \r\n   #  \r\n#  #  \r\n ##   \r\n      \r\n      \r\n      " };
            string[][] bigDigitsLines = new string[10][];
            string[] colon = new string[]
            {
                "      ",
                "      ",
                " ##   ",
                "      ",
                "      ",
                "      ",
                "      ",
                " ##   ",
                "      ",
                "      ",
                "      "
            };
            string[] slash = new string[]
            {
                "   #  ",
                "   #  ",
                "  #   ",
                "  #   ",
                " #    ",
                " #    ",
                "#     ",
                "#     ",
                "      ",
                "      ",
                "      "
            };

            for (int i = 0; i < 10; i++)
            {
                bigDigitsLines[i] = bigDigits[i].Split(new[] { "\r\n" }, StringSplitOptions.None);
            }

            Console.ResetColor();
            Console.WriteLine("\n\nTime is");

            int lines = bigDigitsLines[0].Length;

            for (int line = 0; line < lines; line++)
            {
                // 時
                for (int d = 0; d < hour.Length; d++)
                {
                    if (DateTime.Now.Hour == 3 && DateTime.Now.Minute == 9)
                    {
                        Console.ForegroundColor = ConsoleColor.Cyan;
                    }
                    else
                    {
                        Console.ResetColor();
                    }
                    int n = hour[d] - '0';
                    Console.Write(bigDigitsLines[n][line]);
                }

                // コロン
                Console.ResetColor();
                Console.Write(colon[line]);

                // 分
                for (int d = 0; d < minute.Length; d++)
                {
                    if (DateTime.Now.Minute == 39)
                    {
                        Console.ForegroundColor = ConsoleColor.Cyan;
                    }
                    else if (DateTime.Now.Hour == 3 && DateTime.Now.Minute == 9)
                    {
                        Console.ForegroundColor = ConsoleColor.Cyan;
                    }
                    else if (DateTime.Now.Minute == 3 && DateTime.Now.Second == 9)
                    {
                        Console.ForegroundColor = ConsoleColor.Cyan;
                    }
                    else
                    {
                        Console.ResetColor();
                    }
                    int n = minute[d] - '0';
                    Console.Write(bigDigitsLines[n][line]);
                }

                // コロン
                Console.ResetColor();
                Console.Write(colon[line]);

                // 秒
                for (int d = 0; d < sec.Length; d++)
                {
                    if (DateTime.Now.Second == 39)
                    {
                        Console.ForegroundColor = ConsoleColor.Cyan;
                    }
                    else if (DateTime.Now.Minute == 3 && DateTime.Now.Second == 9)
                    {
                        Console.ForegroundColor = ConsoleColor.Cyan;
                    }
                    else
                    {
                        Console.ResetColor();
                    }
                    int n = sec[d] - '0';
                    Console.Write(bigDigitsLines[n][line]);
                }

                // コロン
                Console.ResetColor();
                Console.Write(colon[line]);

                // ミリ秒
                for (int d = 0; d < millisec.Length; d++)
                {
                    Console.ResetColor();
                    int n = millisec[d] - '0';
                    Console.Write(bigDigitsLines[n][line]);
                }

                Console.WriteLine();
            }

            Console.WriteLine("\n\nDate is");

            for (int line = 0; line < lines; line++)
            {
                // 年
                for (int d = 0; d < year.Length; d++)
                {
                    int n = year[d] - '0';
                    Console.Write(bigDigitsLines[n][line]);
                }

                // スラッシュ
                Console.ResetColor();
                Console.Write(slash[line]);

                // 月
                for (int d = 0; d < month.Length; d++)
                {
                    if (DateTime.Now.Month == 3 && DateTime.Now.Day == 9)
                    {
                        Console.ForegroundColor = ConsoleColor.Cyan;
                    }
                    else
                    {
                        Console.ResetColor();
                    }
                    int n = month[d] - '0';
                    Console.Write(bigDigitsLines[n][line]);
                }

                // スラッシュ
                Console.ResetColor();
                Console.Write(slash[line]);

                // 日
                for (int d = 0; d < day.Length; d++)
                {
                    if (DateTime.Now.Month == 3 && DateTime.Now.Day == 9)
                    {
                        Console.ForegroundColor = ConsoleColor.Cyan;
                    }
                    else
                    {
                        Console.ResetColor();
                    }
                    int n = day[d] - '0';
                    Console.Write(bigDigitsLines[n][line]);
                }
                Console.WriteLine();
            }

            Console.ForegroundColor = ConsoleColor.White;
            Console.WriteLine("\n\n");
            Console.WriteLine($"Local Time: {localTime}");
            Console.WriteLine($"UTC Time: {localTime.ToUniversalTime()}");
            Console.WriteLine($"Unix Time: {unixSeconds} sec \n {unixMillis} ms");
            Console.WriteLine($"Timezone: {TimeZoneInfo.Local.DisplayName} + {TimeZoneInfo.Local.StandardName}");

            double percent =
                DateTime.Now.TimeOfDay.TotalSeconds /
                TimeSpan.FromDays(1).TotalSeconds * 100;
            Console.WriteLine("\nToday's Progress:");
            DrawProgressBar(percent);
        }
    }
}

コメント

タイトルとURLをコピーしました