├── .gitattributes ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug-issue.yml │ ├── enhancement-improvement.yml │ ├── feature-request.yml │ └── hard-crash.yml ├── dependabot.yml └── workflows │ ├── Basic health check.yml │ ├── codeql-analysis.yml │ ├── lang-updates.yml │ ├── translations-test.yml │ └── winget-release.yml ├── .gitignore ├── .vscode └── settings.json ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── ElevenClock.iss ├── INSTALLER.BMP ├── LICENSE ├── README.md ├── TRANSLATION.md ├── build.cmd ├── build_noinstaller.cmd ├── build_release.cmd ├── elevenclock-version-info ├── elevenclock ├── __init__.py ├── data │ ├── contributors.py │ └── translations.py ├── elevenclock.spec ├── external │ ├── FramelessWindow.py │ ├── WnfReader.py │ ├── blurwindow.py │ └── timezones.py ├── globals.py ├── lang │ ├── lang_ar.json │ ├── lang_bg.json │ ├── lang_bs.json │ ├── lang_ca.json │ ├── lang_cs.json │ ├── lang_da.json │ ├── lang_de.json │ ├── lang_el.json │ ├── lang_en.json │ ├── lang_es.json │ ├── lang_et.json │ ├── lang_eu.json │ ├── lang_fa.json │ ├── lang_fi.json │ ├── lang_fr.json │ ├── lang_he.json │ ├── lang_hr.json │ ├── lang_hu.json │ ├── lang_id.json │ ├── lang_it.json │ ├── lang_ja.json │ ├── lang_ko.json │ ├── lang_lt.json │ ├── lang_lv.json │ ├── lang_nb.json │ ├── lang_nl.json │ ├── lang_nn.json │ ├── lang_pl.json │ ├── lang_pt_BR.json │ ├── lang_pt_PT.json │ ├── lang_ro.json │ ├── lang_ru.json │ ├── lang_sk.json │ ├── lang_sl.json │ ├── lang_sr.json │ ├── lang_sv.json │ ├── lang_th.json │ ├── lang_tools.py │ ├── lang_tr.json │ ├── lang_ua.json │ ├── lang_vi.json │ ├── lang_zh_CN.json │ ├── lang_zh_TW.json │ ├── languages.py │ └── translated_percentage.py ├── resources │ ├── about_black.png │ ├── about_white.png │ ├── accent.png │ ├── appearance.png │ ├── appearance_black.png │ ├── appearance_white.png │ ├── blacklistscreen_black.png │ ├── blacklistscreen_white.png │ ├── bug_black.png │ ├── bug_white.png │ ├── bw.png │ ├── cafe_color.png │ ├── clock.png │ ├── clock_black.png │ ├── clock_white.png │ ├── close_black.png │ ├── close_white.png │ ├── coffee_color.png │ ├── collapse_black.png │ ├── collapse_white.png │ ├── copilot_color.png │ ├── cross_black.png │ ├── cross_white.png │ ├── customClock_black.png │ ├── customClock_white.png │ ├── customize_color.png │ ├── datetime_black.png │ ├── datetime_white.png │ ├── defaultClock_black.png │ ├── defaultClock_white.png │ ├── default_format.png │ ├── default_style.png │ ├── desk.png │ ├── deskSettings_color.png │ ├── desktop_cactus.png │ ├── down-arrow_black.png │ ├── down-arrow_white.png │ ├── empty.png │ ├── empty_bell_black.png │ ├── empty_bell_white.png │ ├── expand_black.png │ ├── expand_white.png │ ├── experiment_black.png │ ├── experiment_white.png │ ├── filled_bell_black.png │ ├── filled_bell_white.png │ ├── finish_color.png │ ├── formatClock_black.png │ ├── formatClock_white.png │ ├── formatting.png │ ├── further_custom_color.png │ ├── github_color.png │ ├── globe.png │ ├── gotop_black.png │ ├── gotop_white.png │ ├── hide_black.png │ ├── hide_color.png │ ├── hide_white.png │ ├── icon.bmp │ ├── icon.ico │ ├── icon.png │ ├── internet_black.png │ ├── internet_white.png │ ├── lang_black.png │ ├── lang_white.png │ ├── launch_black.png │ ├── launch_white.png │ ├── license_color.png │ ├── maximize_black.png │ ├── maximize_white.png │ ├── minimize_black.png │ ├── minimize_white.png │ ├── monitor_color.png │ ├── moon_black.png │ ├── moon_white.png │ ├── move_black.png │ ├── move_horizontal_black.png │ ├── move_horizontal_white.png │ ├── move_vertical_black.png │ ├── move_vertical_white.png │ ├── move_white.png │ ├── msdos.png │ ├── msstore_color.png │ ├── next_black.png │ ├── next_white.png │ ├── notif_assist_empty_black.png │ ├── notif_assist_empty_white.png │ ├── notif_assist_filled_black.png │ ├── notif_assist_filled_white.png │ ├── onlydate.png │ ├── onlytime.png │ ├── plugin_black.png │ ├── plugin_white.png │ ├── previous_black.png │ ├── previous_white.png │ ├── restart_black.png │ ├── restart_white.png │ ├── rocket_color.png │ ├── seconds.png │ ├── settings_black.png │ ├── settings_white.png │ ├── show_color.png │ ├── size_black.png │ ├── size_white.png │ ├── taskbarbg_black.png │ ├── taskbarbg_white.png │ ├── taskmgr_black.png │ ├── taskmgr_white.png │ ├── tick_black.png │ ├── tick_white.png │ ├── timespan_color.png │ ├── tools_black.png │ ├── tools_white.png │ ├── tooltip_black.png │ ├── tooltip_white.png │ ├── video_color.png │ ├── wb.png │ ├── weekday.png │ ├── weeknumber.png │ └── win95.png ├── settings.py ├── tools.py ├── versions.py └── welcome.py ├── file.txt ├── icon.bmp ├── icon.ico ├── icon.png ├── media ├── banner.png ├── banner.svg ├── banner.webp ├── icon.ai ├── icon.bmp ├── icon.ico ├── icon.png ├── icon.svg ├── icon.webp ├── img1.png ├── img1.svg ├── img1.webp ├── img2.png ├── img2.svg ├── img2.webp ├── img3.png ├── img3.svg ├── img3.webp ├── img4.png ├── img4.svg ├── img4.webp ├── img5.png ├── img5.svg ├── img5.webp ├── img6.png ├── img6.svg ├── img6.webp ├── img7.png ├── img7.svg ├── img7.webp ├── img8.png ├── img8.svg ├── img8.webp ├── main.png ├── media-icon.png ├── smartscreen1.jpg ├── smartscreen2.jpg └── social.png ├── misc ├── ElevenClock Media.pptx ├── Solid to transparent color converter.xlsx ├── Solid to transparent color converter_light.xlsx └── banner_vert_msstore.png ├── requirements.txt ├── requirements_install.cmd └── scripts ├── apply_versions.py ├── check_python_version.py ├── download_translations.py ├── generate_release.py ├── get_contributors.py ├── purge_unusedtranslations.py ├── tolgee_requests.py ├── translation_commands.py ├── translation_utils.py └── verify_translations.py /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: martinet101 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 13 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 14 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug-issue.yml: -------------------------------------------------------------------------------- 1 | name: '🐞 Report an issue or a bug' 2 | description: Report issues or unexpected behaviours. 3 | title: "[BUG] (Enter your description here)" 4 | labels: ["bug", "triage"] 5 | assignees: marticliment 6 | body: 7 | - type: checkboxes 8 | attributes: 9 | label: Please confirm these before moving forward 10 | description: ![badge](https://img.shields.io/badge/unmaintained-unmaintained_yellow?style=for-the-badge&label=Development%20status&color=yellow). 11 | options: 12 | - label: I have searched for my issue and not found a work-in-progress/duplicate/resolved issue. 13 | required: true 14 | - label: I have tested that this issue has not been fixed in the latest [(beta or stable) release](https://github.com/marticliment/ElevenClock/releases/). 15 | required: true 16 | - label: I have checked the [FAQ](https://github.com/marticliment/ElevenClock#frequently-asked-questions) section for solutions. 17 | required: true 18 | - label: This issue is about a bug (if it is not, please use the [correct template](https://github.com/marticliment/ElevenClock/issues/new/choose)). 19 | required: true 20 | - type: textarea 21 | attributes: 22 | label: Describe your issue 23 | placeholder: Explain the issue you are experiencing, providing as much details as possible about it. 24 | validations: 25 | required: true 26 | - type: textarea 27 | attributes: 28 | label: Steps to reproduce the issue 29 | placeholder: How can this issue be reproduced? List here, if known, the steps followed before this issue appeared. 30 | validations: 31 | required: false 32 | - type: textarea 33 | attributes: 34 | label: ElevenClock Log 35 | render: "text" 36 | placeholder: Paste here your ElevenClock log. Right-click a clock -> ElevenClock Settinfgs -> Debbuging information -> Show log. 37 | validations: 38 | required: true 39 | - type: textarea 40 | attributes: 41 | label: Relevant information 42 | placeholder: Other relevant information about this issue. Perhaps if you have some special settings enabled, or any other detail that could be related. 43 | validations: 44 | required: false 45 | - type: textarea 46 | attributes: 47 | label: Screenshots and videos 48 | placeholder: If applicable, please post here a video or a screenshot of the issue. 49 | validations: 50 | required: false 51 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/enhancement-improvement.yml: -------------------------------------------------------------------------------- 1 | name: '🚧 Suggest an improvement or an enhancement' 2 | description: Propose an improvement to ElevenClock. 3 | title: "[ENHANCEMENT] (Enter your description here)" 4 | labels: ["enhancement", "triage"] 5 | assignees: marticliment 6 | body: 7 | - type: checkboxes 8 | attributes: 9 | label: Please confirm these before moving forward 10 | description: Please confirm the following before posting your issue. 11 | options: 12 | - label: I have searched for my feature proposal and not found a work-in-progress/duplicate/resolved/discarded issue. 13 | required: true 14 | - label: This improvements refers to an existing feature. If you want to suggest a new feature, please use [this template](https://github.com/marticliment/ElevenClock/issues/new?assignees=marticliment&labels=new-feature&projects=&template=feature-request.yml&title=%5BFEATURE+REQUEST%5D+%28Enter+your+description+here%29). 15 | required: true 16 | - label: This improvements is not a bug. If you want to report a bug, please use [this template](https://github.com/marticliment/ElevenClock/issues/new?assignees=marticliment&labels=bug&projects=&template=bug-issue.yml&title=%5BBUG%5D+%28Enter+your+description+here%29). 17 | required: true 18 | - type: textarea 19 | attributes: 20 | label: Describe the improvement 21 | placeholder: Explain how do you see this enhancement, providing as much details as possible about it. 22 | validations: 23 | required: true 24 | - type: textarea 25 | attributes: 26 | label: Describe how this improvement could help users 27 | placeholder: For what would it be useful? 28 | validations: 29 | required: true 30 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature-request.yml: -------------------------------------------------------------------------------- 1 | name: '💡 Propose a new feature' 2 | description: Propose a new feature that could be useful in ElevenClock. 3 | title: "[FEATURE REQUEST] (Enter your description here)" 4 | labels: ["new-feature", "triage"] 5 | assignees: marticliment 6 | body: 7 | - type: checkboxes 8 | attributes: 9 | label: Please confirm these before moving forward 10 | description: Please confirm the following before posting your issue. 11 | options: 12 | - label: I have searched for my feature proposal and not found a work-in-progress/duplicate/resolved/discarded issue. 13 | required: true 14 | - label: This proposal is a completely new feature. If you want to suggest an improvement or an enhancement, please use [this template](https://github.com/marticliment/ElevenClock/issues/new?assignees=marticliment&labels=enhancement&projects=&template=enhancement-improvement.yml&title=%5BENHANCEMENT%5D+%28Enter+your+description+here%29). 15 | required: true 16 | - type: textarea 17 | attributes: 18 | label: Describe the new feature 19 | placeholder: Explain how do you see this new feature, providing as much details as possible about it. 20 | validations: 21 | required: true 22 | - type: textarea 23 | attributes: 24 | label: Describe how this new feature could help users 25 | placeholder: For what would it be useful? 26 | validations: 27 | required: true 28 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/hard-crash.yml: -------------------------------------------------------------------------------- 1 | name: '🚑 Report a crash or a hang' 2 | description: ElevenClock is not launching, is hard-crashing or is hanging at some point. 3 | title: "[CRASH] (Enter your description here)" 4 | labels: ["bug", "important", "triage"] 5 | assignees: marticliment 6 | body: 7 | - type: checkboxes 8 | attributes: 9 | label: Please confirm these before moving forward 10 | description: Please confirm the following before posting your issue. 11 | options: 12 | - label: I have tried reinstalling ElevenClock 13 | required: true 14 | - label: I have tried resetting ElevenClock by reinstalling it and selecting the "Clean Install" option. 15 | required: true 16 | - label: I have tested that this issue has not been fixed in the latest [(beta or stable) release](https://github.com/marticliment/ElevenClock/releases/). 17 | required: true 18 | - type: textarea 19 | attributes: 20 | label: Describe your crash 21 | placeholder: What were you doing when this happened? 22 | validations: 23 | required: true 24 | - type: textarea 25 | attributes: 26 | label: Logs (if possible) 27 | placeholder: If you get an error report or a message, please post it here. 28 | render: "text" 29 | validations: 30 | required: false 31 | - type: textarea 32 | attributes: 33 | label: More details 34 | placeholder: Do you have any other valuable information about this issue? 35 | validations: 36 | required: false 37 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "github-actions" 4 | directory: "/" 5 | schedule: 6 | interval: "daily" 7 | -------------------------------------------------------------------------------- /.github/workflows/Basic health check.yml: -------------------------------------------------------------------------------- 1 | name: Basic health check (Install dependencies and run the script) 2 | 3 | on: 4 | push: 5 | branches: [ "main" ] 6 | paths: 7 | - '**.py' 8 | 9 | pull_request: 10 | branches: [ "main" ] 11 | paths: 12 | - '**.py' 13 | 14 | 15 | jobs: 16 | build: 17 | 18 | runs-on: windows-latest 19 | 20 | steps: 21 | - uses: actions/checkout@v4 22 | - name: Set up Python 3.11 23 | uses: actions/setup-python@v5 24 | with: 25 | python-version: '3.11' 26 | - name: Installing dependencies 27 | run: | 28 | python -m pip install --upgrade pip 29 | pip install -r requirements.txt 30 | - name: Running the file in test mode 31 | run: | 32 | cd elevenclock 33 | python -m compileall -q . 34 | 35 | -------------------------------------------------------------------------------- /.github/workflows/codeql-analysis.yml: -------------------------------------------------------------------------------- 1 | # For most projects, this workflow file will not need changing; you simply need 2 | # to commit it to your repository. 3 | # 4 | # You may wish to alter this file to override the set of languages analyzed, 5 | # or to provide custom queries or build logic. 6 | # 7 | # ******** NOTE ******** 8 | # We have attempted to detect the languages in your repository. Please check 9 | # the `language` matrix defined below to confirm you have the correct set of 10 | # supported CodeQL languages. 11 | # 12 | name: "CodeQL" 13 | 14 | on: 15 | push: 16 | branches: [ main ] 17 | pull_request: 18 | # The branches below must be a subset of the branches above 19 | branches: [ main ] 20 | 21 | jobs: 22 | analyze: 23 | name: Analyze 24 | runs-on: windows-latest 25 | permissions: 26 | actions: read 27 | contents: read 28 | security-events: write 29 | 30 | strategy: 31 | fail-fast: false 32 | matrix: 33 | language: [ 'python' ] 34 | # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] 35 | # Learn more about CodeQL language support at https://git.io/codeql-language-support 36 | 37 | steps: 38 | - name: Checkout repository 39 | uses: actions/checkout@v4 40 | 41 | # Initializes the CodeQL tools for scanning. 42 | - name: Initialize CodeQL 43 | uses: github/codeql-action/init@v3 44 | with: 45 | languages: ${{ matrix.language }} 46 | # If you wish to specify custom queries, you can do so here or in a config file. 47 | # By default, queries listed here will override any specified in a config file. 48 | # Prefix the list here with "+" to use these queries and those in the config file. 49 | # queries: ./path/to/local/query, your-org/your-repo/queries@main 50 | 51 | # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). 52 | # If this step fails, then you should remove it and run the build manually (see below) 53 | - name: Autobuild 54 | uses: github/codeql-action/autobuild@v3 55 | 56 | # ℹ️ Command-line programs to run using the OS shell. 57 | # 📚 https://git.io/JvXDl 58 | 59 | # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines 60 | # and modify them (or add more) to build your code if your project 61 | # uses a compiled language 62 | 63 | #- run: | 64 | # make bootstrap 65 | # make release 66 | 67 | - name: Perform CodeQL Analysis 68 | uses: github/codeql-action/analyze@v3 69 | -------------------------------------------------------------------------------- /.github/workflows/lang-updates.yml: -------------------------------------------------------------------------------- 1 | name: Retrieve latest translations from Tolgee 2 | 3 | on: 4 | schedule: 5 | - cron: 0 0 * * * 6 | workflow_dispatch: 7 | jobs: 8 | main: 9 | runs-on: windows-latest 10 | env: 11 | TOLGEE_KEY: "${{ secrets.TOLGEE_TOKEN }}" 12 | steps: 13 | - name: Checkout repository 14 | uses: actions/checkout@v4 15 | - name: Download Tolgee translations 16 | run: | 17 | python scripts/download_translations.py --autocommit 18 | - name: Create Pull Request 19 | uses: peter-evans/create-pull-request@v7 20 | with: 21 | delete-branch: true 22 | base: main 23 | token: "${{ secrets.REPO_SCOPED_TOKEN }}" 24 | labels: tolgee-ci 25 | title: "Load translations from Tolgee" 26 | body: "" 27 | assignees: marticliment 28 | author: "Martí Climent " 29 | commit-message: | 30 | Load updated translations from Tolgee 31 | Co-authored-by: Martí Climent from the multiverse <121457539+martinet101@users.noreply.github.com> 32 | branch: pull-request/update-translation 33 | -------------------------------------------------------------------------------- /.github/workflows/translations-test.yml: -------------------------------------------------------------------------------- 1 | name: Translation integrity 2 | on: 3 | pull_request: 4 | branches: [ "main" ] 5 | 6 | workflow_dispatch: 7 | 8 | jobs: 9 | test-translations-and-approve: 10 | if: contains(github.event.pull_request.labels.*.name, 'tolgee-ci') 11 | runs-on: ubuntu-latest # For a list of available runner types, refer to 12 | # https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on 13 | 14 | steps: 15 | - name: Checkout the repository 16 | id: checkout 17 | uses: actions/checkout@v4 18 | with: 19 | fetch-depth: 0 20 | 21 | - name: Test translations 22 | id: tests 23 | run: | 24 | python scripts/verify_translations.py 25 | 26 | - name: Approve PR since checks are Ok 27 | uses: hmarr/auto-approve-action@v4 28 | with: 29 | review-message: "Tolgee-CI Changes have been approved since they passed testing" 30 | -------------------------------------------------------------------------------- /.github/workflows/winget-release.yml: -------------------------------------------------------------------------------- 1 | name: Publish to WinGet 2 | on: 3 | release: 4 | types: [released] 5 | jobs: 6 | publish: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - uses: vedantmgoyal9/winget-releaser@main 10 | with: 11 | identifier: SomePythonThings.ElevenClock 12 | version: ${{ github.event.release.tag_name }} 13 | token: ${{ secrets.WINGET_TOKEN }} 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | bug.png 2 | ElevenClock.exe 3 | elevenclock_bin/ 4 | ElevenClockBin/ 5 | elevenclock\__init__.spec 6 | elevenclock\lang\__pycache__\* 7 | *.pyc 8 | *.pyo 9 | __init__ 10 | ElevenClock.zip 11 | *.code-workspace 12 | elevenclock/.vscode/launch.json 13 | elevenclock/lang/lang_backup* 14 | 15 | # generate_release.py 16 | RELEASE.md 17 | 18 | # Virtual environments 19 | venv/ 20 | env/ 21 | 22 | # Intellij Cache and Settings folder 23 | .idea/ 24 | elevenclock.py 25 | compile.py 26 | build_BETA.bat 27 | APIKEY.txt 28 | ElevenClock.Installer.exe 29 | __init__.exe 30 | ElevenClock.Installer.exe.zip 31 | .vscode/launch.json 32 | .vs/ 33 | scripts/APIKEY.txt 34 | sign.cmd.lnk 35 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "python.analysis.extraPaths": [ 3 | "./elevenclock", 4 | "./elevenclock/lang" 5 | ], 6 | "cSpell.enableFiletypes": [ 7 | "!python" 8 | ] 9 | } -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, religion, or sexual identity 10 | and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | * Demonstrating empathy and kindness toward other people 21 | * Being respectful of differing opinions, viewpoints, and experiences 22 | * Giving and gracefully accepting constructive feedback 23 | * Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | * Focusing on what is best not just for us as individuals, but for the 26 | overall community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | * The use of sexualized language or imagery, and sexual attention or 31 | advances of any kind 32 | * Trolling, insulting or derogatory comments, and personal or political attacks 33 | * Public or private harassment 34 | * Publishing others' private information, such as a physical or email 35 | address, without their explicit permission 36 | * Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | marticlilop@gmail.com. 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series 86 | of actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or 93 | permanent ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within 113 | the community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.0, available at 119 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. 120 | 121 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 122 | enforcement ladder](https://github.com/mozilla/diversity). 123 | 124 | [homepage]: https://www.contributor-covenant.org 125 | 126 | For answers to common questions about this code of conduct, see the FAQ at 127 | https://www.contributor-covenant.org/faq. Translations are available at 128 | https://www.contributor-covenant.org/translations. 129 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | Please check if there's any Issue/PR about the same thing before opening a new one. 2 | 3 | Feel free to submit new ideas via mail or opening a new Issue, or if you'd like, feel free also to fix something/add a feature, etc, submitting a pull request :) 4 | -------------------------------------------------------------------------------- /ElevenClock.iss: -------------------------------------------------------------------------------- 1 | ; Script generated by the Inno Setup Script Wizard. 2 | ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! 3 | 4 | #define MyAppName "ElevenClock" 5 | #define MyAppVersion "4.4.1.1" 6 | #define MyAppPublisher "Martí Climent" 7 | #define MyAppURL "https://marticliment.com/elevenclock" 8 | #define MyAppExeName "ElevenClock.exe" 9 | 10 | [Setup] 11 | ; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications. 12 | ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) 13 | AppId={{D62480B8-71F1-48CE-BEEC-9D3E172C87B5} 14 | AppName={#MyAppName} 15 | DisableWelcomePage=no 16 | AppVersion={#MyAppVersion} 17 | AppVerName={#MyAppName} 18 | AppPublisher="Martí Climent" 19 | AppPublisherURL="https://marticliment.com/" 20 | AppSupportURL="https://marticliment.com/#contact" 21 | AppUpdatesURL="https://github.com/marticliment/ElevenClock/releases" 22 | VersionInfoVersion=4.4.1.1 23 | DefaultDirName={autopf}\ElevenClock 24 | DisableDirPage=yes 25 | ChangesAssociations=yes 26 | CloseApplications=no 27 | ArchitecturesInstallIn64BitMode=x64 arm64 28 | DisableProgramGroupPage=yes 29 | MinVersion=10.0 30 | LicenseFile=LICENSE 31 | ; Uncomment the following line to run in non administrative install mode (install for current user only.) 32 | PrivilegesRequired=lowest 33 | OutputDir=.\ 34 | OutputBaseFilename=ElevenClock.Installer 35 | SetupIconFile=elevenclock\resources\icon.ico 36 | UninstallDisplayIcon={app}\ElevenClock.exe 37 | Compression=lzma 38 | SolidCompression=yes 39 | UsePreviousAppDir=no 40 | WizardStyle=classic 41 | WizardImageStretch=yes 42 | WizardImageFile=INSTALLER.BMP 43 | WizardSmallImageFile=elevenclock\resources\icon.bmp 44 | UsePreviousTasks=no 45 | 46 | [Languages] 47 | Name: "English"; MessagesFile: "compiler:Default.isl" 48 | Name: "Armenian"; MessagesFile: "compiler:Languages\Armenian.isl" 49 | Name: "BrazilianPortuguese"; MessagesFile: "compiler:Languages\BrazilianPortuguese.isl" 50 | Name: "Catalan"; MessagesFile: "compiler:Languages\Catalan.isl" 51 | Name: "Corsican"; MessagesFile: "compiler:Languages\Corsican.isl" 52 | Name: "Czech"; MessagesFile: "compiler:Languages\Czech.isl" 53 | Name: "Danish"; MessagesFile: "compiler:Languages\Danish.isl" 54 | Name: "Dutch"; MessagesFile: "compiler:Languages\Dutch.isl" 55 | Name: "Finnish"; MessagesFile: "compiler:Languages\Finnish.isl" 56 | Name: "French"; MessagesFile: "compiler:Languages\French.isl" 57 | Name: "German"; MessagesFile: "compiler:Languages\German.isl" 58 | Name: "Hebrew"; MessagesFile: "compiler:Languages\Hebrew.isl" 59 | Name: "Icelandic"; MessagesFile: "compiler:Languages\Icelandic.isl" 60 | Name: "Italian"; MessagesFile: "compiler:Languages\Italian.isl" 61 | Name: "Japanese"; MessagesFile: "compiler:Languages\Japanese.isl" 62 | Name: "Norwegian"; MessagesFile: "compiler:Languages\Norwegian.isl" 63 | Name: "Polish"; MessagesFile: "compiler:Languages\Polish.isl" 64 | Name: "Portuguese"; MessagesFile: "compiler:Languages\Portuguese.isl" 65 | Name: "Russian"; MessagesFile: "compiler:Languages\Russian.isl" 66 | Name: "Slovenian"; MessagesFile: "compiler:Languages\Slovenian.isl" 67 | Name: "Spanish"; MessagesFile: "compiler:Languages\Spanish.isl" 68 | Name: "Turkish"; MessagesFile: "compiler:Languages\Turkish.isl" 69 | Name: "Ukrainian"; MessagesFile: "compiler:Languages\Ukrainian.isl" 70 | Name: "Korean"; MessagesFile: "compiler:Languages\Korean.isl" 71 | 72 | [UninstallRun] 73 | Filename: "{cmd}"; Parameters: "/C ""taskkill /im ElevenClock.exe /f /t" 74 | 75 | [InstallDelete] 76 | Type: filesandordirs; Name: "{autopf}\ElevenClock\*"; BeforeInstall: TaskKill('ElevenClock.exe'); 77 | 78 | [UninstallDelete] 79 | Type: filesandordirs; Name: "{autopf}\ElevenClock\*" 80 | Type: filesandordirs; Name: "{autopf}\ElevenClock392\*" 81 | 82 | [Tasks] 83 | Name: "resetelevenclock"; Description: "Clean install (reset settings)"; GroupDescription: "Installation type"; Flags: unchecked 84 | 85 | [InstallDelete] 86 | Type: filesandordirs; Name: "{userdesktop}\..\.elevenclock\*"; Tasks: resetelevenclock 87 | 88 | 89 | [Code] 90 | procedure InitializeWizard; 91 | begin 92 | WizardForm.Bevel.Visible := False; 93 | WizardForm.Bevel1.Visible := True; 94 | end; 95 | 96 | function InitializeUninstall(): Boolean; 97 | var 98 | ErrorCode: Integer; 99 | begin 100 | if CheckForMutexes('MyProgMutex') and 101 | (MsgBox('Application is running, do you want to close it?', 102 | mbConfirmation, MB_OKCANCEL) = IDOK) then 103 | begin 104 | Exec('taskkill.exe', '/f /im ElevenClock.exe', '', SW_HIDE, 105 | ewWaitUntilTerminated, ErrorCode); 106 | end; 107 | 108 | Result := True; 109 | end; 110 | 111 | procedure TaskKill(FileName: String); 112 | var 113 | ResultCode: Integer; 114 | begin 115 | Exec('taskkill.exe', '/f /im ' + '"' + FileName + '"', '', SW_HIDE, 116 | ewWaitUntilTerminated, ResultCode); 117 | end; 118 | 119 | procedure RunUninstaller(Path: String); 120 | var 121 | ResultCode: Integer; 122 | begin 123 | Exec(ExpandConstant('{app}')+'\'+Path, ' /verysilent /SUPPRESSMSGBOXES', '', SW_HIDE, 124 | ewWaitUntilTerminated, ResultCode); 125 | end; 126 | 127 | 128 | 129 | [Registry] 130 | Root: HKCU; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; ValueType: string; ValueName: "elevenClock"; ValueData: """{app}\ElevenClock.exe"""; Flags: uninsdeletevalue 131 | 132 | [Files] 133 | Source: "ElevenClockBin/base_library.zip"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs 64bit ; BeforeInstall: RunUninstaller('unins.exe'); 134 | Source: "ElevenClockBin/ElevenClock.exe"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs 64bit ; 135 | Source: "ElevenClockBin/*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs 64bit; 136 | ; NOTE: Don't use "Flags: ignoreversion" on any shared system files 137 | 138 | [Icons] 139 | Name: "{autoprograms}\{#MyAppName} Settings"; Filename: "{app}\{#MyAppExeName}"; Parameters: "--settings" 140 | Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; 141 | 142 | [Run] 143 | Filename: "{app}\ElevenClock.exe"; Flags: runasoriginaluser dontlogparameters nowait postinstall; 144 | -------------------------------------------------------------------------------- /INSTALLER.BMP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/INSTALLER.BMP -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

ElevenClock

2 | 3 | [![Downloads@4.4.1.1](https://img.shields.io/github/downloads/marticliment/elevenclock/4.4.1.1/total?style=for-the-badge)](https://github.com/martinet101/ElevenClock/releases/latest/download/ElevenClock.Installer.exe) 4 | [![Release Version Badge](https://img.shields.io/github/v/release/martinet101/ElevenClock?style=for-the-badge)](https://github.com/martinet101/ElevenClock/releases) 5 | [![Issues Badge](https://img.shields.io/github/issues/martinet101/ElevenClock?style=for-the-badge)](https://github.com/martinet101/ElevenClock/issues) 6 | [![Closed Issues Badge](https://img.shields.io/github/issues-closed/martinet101/ElevenClock?color=%238256d0&style=for-the-badge)](https://github.com/martinet101/ElevenClock/issues?q=is%3Aissue+is%3Aclosed) 7 | 8 | ElevenClock is **free software** (under [Apache License 2.0](https://github.com/marticliment/ElevenClock/blob/main/LICENSE)) that lets you put a **customizable clock on your Windows 11 taskbar(s)**. When Microsoft created the Windows 11 clock, they removed the ability to make it customizable, and to show it on multiple displays. You can customize ElevenClock however you wish — from adding seconds, to changing its color scheme — __and__ it appears on all the displays 9 | connected to your PC. 10 | You can choose to show or hide the clock with full-screen apps, and what happens when you click, double-click or middle-click it. 11 | Do you want a clock (or two clocks) on each of your displays? You can have them, and **customize them independently**, or leave them looking like the Windows’ clock... It’s your choice. 12 | ElevenClock is millisecond-accurate, auto-synced with Internet Time... You can even set it to different time zones. 13 | 14 | **This is ElevenClock's official repository. If you are searching ElevenClock's homepage, please refer to [https://www.marticliment.com/elevenclock/](https://www.marticliment.com/elevenclock/)** 15 | 16 | ## Table of contents 17 | - **[ElevenClock Homepage](https://www.marticliment.com/elevenclock/)** 18 | - [Table of contents](#table-of-contents) 19 | - [Installation](#fast-installation) 20 | - [Support the developer](#support-the-developer) 21 | - [Features](#features) 22 | - [Translating ElevenClock][translating link] 23 | - [Currently supported languages](#currently-supported-languages) 24 | - [Screenshots](#screenshots) 25 | - [Frequently Asked Questions](#frequently-asked-questions) 26 | - [Legacy installation](#legacy-installation) 27 | 28 | ## Microsoft store installation: 29 | 30 | [alt_text](https://marticliment.com/redirect/?elevenclockstore) 31 |
32 | Alternatively, you can install ElevenClock from Winget or Chocolatey: 33 | ```powershell 34 | winget install ElevenClock --source winget 35 | ``` 36 | ```powershell 37 | choco install elevenclock 38 | ``` 39 |
40 | 41 | You can also download ElevenClock from its [homepage](https://www.marticliment.com/elevenclock/) or from [GitHub releases](https://github.com/marticliment/ElevenClock/releases/latest) 42 | (See the [WIKI](https://github.com/marticliment/ElevenClock/wiki#elevenclock-installation) for more information) 43 | 44 | ## Support the developer 45 | Buy Me a Coffee at ko-fi.com 46 | 47 | ## Features 48 | 49 | - **Custom time/date format** – Add seconds and day of the week, or hide the date and show only 50 | the time. Choose from common presets, or create your own formats. 51 | - **Custom styling** – Change the clock’s size, background color, font family/size/style/color... Or 52 | leave the default style, which mimics your Windows clock. 53 | - **Custom position, number of clocks** – Put the clock anywhere on your display. Add a second 54 | clock and put one on each side of your taskbar, or anywhere you wish. 55 | - **Custom behaviour** – Keep the clock visible over full-screen windows, so you always know what 56 | time it is. Change what happens when you click, double-click or middle-click it. 57 | - **Auto-sync with Internet time** 58 | - **Multi-monitor support** – Each clock is individually customizable. 59 | 60 | ## Translating ElevenClock to other languages 61 | In order to translate ElevenClock to other languages or to update an old translation, please see [Translating ElevenClock - ElevenClock Wiki][translating link] for more info. 62 | 63 | 64 | ### Currently Supported languages 65 | 66 | | Language | Translated | Translator(s) | 67 | | :-- | :-- | --- | 68 | |   Arabic - عربي‎ | 67% | | 69 | |   Bulgarian - български | 42% | Hristo Vasilev, [iconata](https://github.com/iconata) | 70 | |   Bosnian - Bosanski | 5% | | 71 | |   Catalan - Català | 100% | [marticliment](https://github.com/marticliment) | 72 | |   Czech - Čeština | 95% | [MatousAdamu](https://github.com/MatousAdamu), [panther7](https://github.com/panther7), [SunightMC](https://github.com/SunightMC) | 73 | |   Danish - Dansk | 97% | Carsten Kristoffersen, Sebblich | 74 | |   German - Deutsch | 100% | Bikholf, [schnurlos](https://github.com/schnurlos), [Seeloewen](https://github.com/Seeloewen), [tsloms](https://github.com/tsloms), [XenoKeks](https://github.com/XenoKeks), [yrjarv](https://github.com/yrjarv) | 75 | |   Greek - Ελληνικά | 17% | [panos78](https://github.com/panos78) | 76 | |   English - English | 100% | [marticliment](https://github.com/marticliment) | 77 | |   Spanish - Español | 100% | [marticliment](https://github.com/marticliment) | 78 | |   Estonian - eesti | 80% | | 79 | |   Persian - فارسی‎ | 5% | | 80 | |   Finnish - Suomi | 97% | [npsand](https://github.com/npsand) | 81 | |   French - Français | 100% | [Lilobast](https://github.com/Lilobast), [scrocquesel](https://github.com/scrocquesel) | 82 | |   Hebrew - עִבְרִית‎ | 81% | xRLx | 83 | |   Croatian - Hrvatski | 77% | [DMNz3](https://github.com/DMNz3) | 84 | |   Hungarian - Magyar | 87% | [gidano](https://github.com/gidano), [jstmrby](https://github.com/jstmrby), sympda.blog.hu, viktak.com | 85 | |   Indonesian - Bahasa Indonesia | 81% | [adinugrahasatya](https://github.com/adinugrahasatya), FahrulID | 86 | |   Italian - Italiano | 97% | [Parapongo](https://github.com/Parapongo), [tuniel-xda](https://github.com/tuniel-xda), [zuidstroopwafel](https://github.com/zuidstroopwafel) | 87 | |   Japanese - 日本語 | 88% | [Robot-Inventor](https://github.com/Robot-Inventor), [ShintakuNobuhiro](https://github.com/ShintakuNobuhiro) | 88 | |   Korean - 한국어 | 100% | [sinusinu](https://github.com/sinusinu), VᴇɴᴜꜱGɪʀʟ (비너스걸) | 89 | |   Lithuanian - Lietuvių | 18% | generic pleb | 90 | |   Latvian - Latviski | 67% | [Coool](https://github.com/Coool), [dejelnieks](https://github.com/dejelnieks), [shadow118](https://github.com/shadow118) | 91 | |   Norwegian (bokmål) | 100% | [yrjarv](https://github.com/yrjarv) | 92 | |   Norwegian (nynorsk) | 100% | [yrjarv](https://github.com/yrjarv) | 93 | |   Dutch - Nederlands | 84% | Bugs, [joosthoi1](https://github.com/joosthoi1), [jordyegnl](https://github.com/jordyegnl) | 94 | |   Polish - Polski | 100% | Fresta, [PabloMat](https://github.com/PabloMat) | 95 | |   Portuguese (Brazil) | 97% | [gumbarros](https://github.com/gumbarros), [maisondasilva](https://github.com/maisondasilva), [wanderleihuttel](https://github.com/wanderleihuttel) | 96 | |   Portuguese (Portugal) | 97% | [jmlcoliveira](https://github.com/jmlcoliveira), Miguel Couto | 97 | |   Romanian - Română | 80% | | 98 | |   Russian - Русский | 100% | [Denisskas](https://github.com/Denisskas), [kira-lappo](https://github.com/kira-lappo), Risen | 99 | |   Slovak - Slovenčina | 28% | [metmanik](https://github.com/metmanik) | 100 | |   Slovene - Slovenščina | 97% | [rumplin](https://github.com/rumplin) | 101 | |   Serbian - Srpski | 18% | Stefan Marjanov | 102 | |   Swedish - Svenska | 97% | cjal95, Noffe, [yrjarv](https://github.com/yrjarv) | 103 | |   Thai - ภาษาไทย | 71% | [richeyphu](https://github.com/richeyphu) | 104 | |   Turkish - Türkçe | 97% | [teknoist-(Mahmut Sözen)](https://github.com/teknoist-(Mahmut Sözen)) | 105 | |   Ukranian - Yкраї́нська | 87% | [p4rzivalll](https://github.com/p4rzivalll) | 106 | |   Vietnamese - Tiếng Việt | 97% | [legendsjoon](https://github.com/legendsjoon), [Leoodz](https://github.com/Leoodz), [lequan81](https://github.com/lequan81), [Quochieu0211](https://github.com/Quochieu0211), [tnhung2011](https://github.com/tnhung2011) | 107 | |   Simplified Chinese (China) | 100% | [BoyceLig](https://github.com/BoyceLig), CnYeSheng, [hlgsdx](https://github.com/hlgsdx), [jmlcoliveira](https://github.com/jmlcoliveira), [sino1641](https://github.com/sino1641), [strombooli](https://github.com/strombooli) | 108 | |   Traditional Chinese (Taiwan) | 100% | [BoyceLig](https://github.com/BoyceLig), [CnYeSheng](https://github.com/CnYeSheng), [mmis1000](https://github.com/mmis1000), [SiderealArt](https://github.com/SiderealArt) | 109 | 110 | Last updated: Sat Mar 8 00:55:42 2025 111 | 112 | 113 | 114 | ## Contributors 115 | ElevenClock wouldn't have been possible with all the help from every single contributor. From the person who fixed a typo to the person who improved half of the code, ElevenClock wouldn't have been possible without you :)

116 | 117 | ### Contributors list 118 | [![My dear contributors](https://contrib.rocks/image?repo=martinet101/ElevenClock)](https://github.com/martinet101/ElevenClock/graphs/contributors) 119 | 120 | ## The icon: 121 | ElevenClock's icon is a collaboration with [Xavier Delugo](https://www.instagram.com/xdelugo/) 122 | 123 | ## Screenshots 124 | 125 | ElevenClock's promo media 126 | 127 | ![](https://github.com/martinet101/ElevenClock/blob/main/media/img1.webp?raw=true) 128 | ![](https://github.com/martinet101/ElevenClock/blob/main/media/img2.webp?raw=true) 129 | ![](https://github.com/martinet101/ElevenClock/blob/main/media/img3.webp?raw=true) 130 | ![](https://github.com/martinet101/ElevenClock/blob/main/media/img4.webp?raw=true) 131 | ![](https://github.com/martinet101/ElevenClock/blob/main/media/img5.webp?raw=true) 132 | ![](https://github.com/martinet101/ElevenClock/blob/main/media/img6.webp?raw=true) 133 | ![](https://github.com/martinet101/ElevenClock/blob/main/media/img7.webp?raw=true) 134 | ![](https://github.com/martinet101/ElevenClock/blob/main/media/img8.webp?raw=true) 135 | 136 | 143 | 144 | ## Frequently asked questions 145 | 146 | **Q: The clock shows over fullscreen** 147 | A: Enable fullscreen hiding in settings 148 | # 149 | **Q: The clock shows over RDP sessions** 150 | A: Enable RDP hiding in settings (it may consume more CPU) 151 | # 152 | **Q: Can ElevenClock be in my language?** 153 | A: Yes, just take a look at [TRANSLATION.md][translating link] 154 | # 155 | **Q: My antivirus is telling me that ElevenClock is a virus/My antivirus is uninstalling ElevenClock/My browser is blocking ElevenClock download** 156 | A: A common reason apps (i.e., executables) get blocked and/or detected as a virus — even when there's nothing malicious about them, like in the case of ElevenClock — is because they're not being used by a relatively large amount of people. 157 | 158 | Combine that with the fact that you might be downloading something that was recently released, and simply blocking unknown apps is in many cases a good precaution to take in order to prevent actual malware. 159 | 160 | Since ElevenClock is open source and safe to use, simply whitelist the app in the settings of your antivirus/browser. 161 | # 162 | **Q: The clock shows seconds when the "Show Seconds" settings is disabled** 163 | A: Check that you don't have seconds set in your regional settings and disable seconds following this [article's instructions](https://www.howtogeek.com/325096/how-to-make-windows-10s-taskbar-clock-display-seconds/) (Other guides might not work) 164 | # 165 | **Q: ElevenClock does not show the correct time zone when time zone is changed** 166 | A: Just restart ElevenClock (Right-click clock -> Restart ElevenClock) 167 | # 168 | **Q: The main clock does not get modified when enabling seconds, etc.** 169 | A: ElevenClock can't modify or update the main clock due to Windows 11's restrictions. 170 | 171 | 172 | ## Legacy Installation 173 | 174 | See the wiki: https://github.com/martinet101/ElevenClock/wiki#elevenclock-installation 175 | 176 | 177 | [translating link]: https://github.com/martinet101/ElevenClock/wiki#translating-elevenclock 178 | -------------------------------------------------------------------------------- /TRANSLATION.md: -------------------------------------------------------------------------------- 1 | ## Please see [https://github.com/martinet101/ElevenClock/wiki/Translating-ElevenClock](https://github.com/martinet101/ElevenClock/wiki/Translating-ElevenClock) 2 | -------------------------------------------------------------------------------- /build.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | setlocal EnableDelayedExpansion 3 | 4 | set "py=%cd%\venv\Scripts\python.exe" 5 | 6 | IF EXIST %py% ( 7 | echo Using VENV Python 8 | ) ELSE ( 9 | set "py=python" 10 | echo Using system Python 11 | ) 12 | 13 | set "option=" 14 | for %%a in (%*) do ( 15 | if not defined option ( 16 | set arg=%%a 17 | echo %arg% 18 | if "!arg:~0,2!" equ "--" ( 19 | set "option!arg!=1" 20 | set "option=" 21 | ) else ( 22 | if "!arg:~0,1!" equ "-" set "option=!arg!" 23 | ) 24 | ) else ( 25 | set "option!option!=%%a" 26 | set "option=" 27 | ) 28 | ) 29 | 30 | set option 31 | 32 | %py% -m pip install -r requirements.txt 33 | %py% -m pip install packaging 34 | if defined option--only-requirements ( 35 | goto :end 36 | ) 37 | 38 | %py% scripts/check_python_version.py --min-version "3.11.0" 39 | if %errorlevel% neq 0 ( 40 | exit /b %errorlevel% 41 | ) 42 | 43 | @echo off 44 | 45 | %py% scripts/apply_versions.py 46 | 47 | rmdir /Q /S ElevenClockBin 48 | xcopy elevenclock elevenclock_bin /E /H /C /I /Y 49 | pushd elevenclock_bin 50 | 51 | %py% -m compileall -b . 52 | if %errorlevel% neq 0 goto:error 53 | 54 | del /S *.py 55 | rmdir /Q /S __pycache__ 56 | rmdir /Q /S build 57 | rmdir /Q /S dist 58 | rmdir /Q /S external\__pycache__ 59 | rmdir /Q /S lang\__pycache__ 60 | copy ..\elevenclock\__init__.py .\ 61 | 62 | %py% -m PyInstaller elevenclock.spec 63 | if %errorlevel% neq 0 goto:error 64 | 65 | timeout 2 66 | 67 | move dist\ElevenClock ..\ElevenClockBin 68 | if %errorlevel% neq 0 goto:error 69 | popd 70 | 71 | rmdir /Q /S elevenclock_bin 72 | 73 | pushd ElevenClockBin\PySide6 74 | del opengl32sw.dll 75 | del Qt6Network.dll 76 | del Qt6OpenGL.dll 77 | del Qt6Pdf.dll 78 | del Qt6Qml.dll 79 | del Qt6QmlModels.dll 80 | del Qt6Quick.dll 81 | del Qt6VirtualKeyboard.dll 82 | del QtNetwork.pyd 83 | popd 84 | 85 | pushd ElevenClockBin\tcl 86 | rmdir /Q /S tzdata 87 | popd 88 | 89 | pushd ElevenClockBin\lang 90 | del download_translations.pyc 91 | popd 92 | 93 | pushd ElevenClockBin\PySide6\plugins\imageformats 94 | move qico.dll filetomaintain 95 | del *.dll 96 | move filetomaintain qico.dll 97 | popd 98 | 99 | 100 | if defined option--no-installer ( 101 | goto :skip-installer 102 | ) 103 | 104 | echo You might want to sign your executable now 105 | pause 106 | 107 | set INSTALLATOR="%SYSTEMDRIVE%\Program Files (x86)\Inno Setup 6\ISCC.exe" 108 | if exist %INSTALLATOR% ( 109 | %INSTALLATOR% "ElevenClock.iss" 110 | ElevenClock.Installer.exe 111 | ) else ( 112 | echo Make installer is skipped, because installator missing. 113 | echo Running app... 114 | start /b ElevenClockBin/ElevenClock.exe 115 | ) 116 | 117 | echo You might want to sign your installer now 118 | pause 119 | 120 | :skip-installer 121 | 122 | if defined option--release ( 123 | %py% scripts/generate_release.py 124 | ) 125 | 126 | goto:end 127 | 128 | :error 129 | echo Error! 130 | 131 | :end 132 | pause 133 | -------------------------------------------------------------------------------- /build_noinstaller.cmd: -------------------------------------------------------------------------------- 1 | start build.cmd --no-installer 2 | -------------------------------------------------------------------------------- /build_release.cmd: -------------------------------------------------------------------------------- 1 | start build.cmd --release 2 | -------------------------------------------------------------------------------- /elevenclock-version-info: -------------------------------------------------------------------------------- 1 | # UTF-8 2 | # 3 | # For more details about fixed file info 'ffi' see: 4 | # http://msdn.microsoft.com/en-us/library/ms646997.aspx 5 | VSVersionInfo( 6 | ffi=FixedFileInfo( 7 | # filevers and prodvers should be always a tuple with four items: (1, 2, 3, 4) 8 | # Set not needed items to zero 0. 9 | filevers=(1, 9, 7, 30920), 10 | prodvers=(1, 9, 7, 30920), 11 | # Contains a bitmask that specifies the valid bits 'flags'r 12 | mask=0x3f, 13 | # Contains a bitmask that specifies the Boolean attributes of the file. 14 | flags=0x0, 15 | # The operating system for which this file was designed. 16 | # 0x4 - NT and there is no need to change it. 17 | OS=0x4, 18 | # The general type of file. 19 | # 0x1 - the file is an application. 20 | fileType=0x1, 21 | # The function of the file. 22 | # 0x0 - the function is not defined for this fileType 23 | subtype=0x0, 24 | # Creation date and time stamp. 25 | date=(0, 0) 26 | ), 27 | kids=[ 28 | StringFileInfo( 29 | [ 30 | StringTable( 31 | u'040904B0', 32 | [ 33 | StringStruct(u'CompanyName', u'Martí Climent'), 34 | StringStruct(u'FileDescription', u'ElevenClock'), 35 | StringStruct(u'FileVersion', u'4.4.1.1'), 36 | StringStruct(u'ProductVersion', u'4.4.1.1'), 37 | StringStruct(u'InternalName', u'ElevenClock'), 38 | StringStruct(u'LegalCopyright', u'Martí Climent'), 39 | StringStruct(u'OriginalFilename', u'elevenclock.exe'), 40 | StringStruct(u'ProductName', u'ElevenClock') 41 | ]) 42 | ]), 43 | VarFileInfo([VarStruct(u'Translation', [1033, 1200])]) 44 | ] 45 | ) -------------------------------------------------------------------------------- /elevenclock/data/contributors.py: -------------------------------------------------------------------------------- 1 | # Autogenerated file, do not modify it!!! 2 | 3 | contributors = [ 4 | "marticliment", 5 | "panther7", 6 | "kirill-d-lappo", 7 | "Lilobast", 8 | "BoyceLig", 9 | "sinusinu", 10 | "Seeloewen", 11 | "VenusGirl", 12 | "noname-ctrl", 13 | "ShintakuNobuhiro", 14 | "xsm1997", 15 | "yrjarv", 16 | "wanderleihuttel", 17 | "mmis1000", 18 | "jameshamm", 19 | "jmlcoliveira", 20 | "skanda890", 21 | "viktak", 22 | "richeyphu", 23 | "vedantmgoyal9", 24 | "jstmrby", 25 | "ppvnf", 26 | "kinr0k", 27 | "harel013", 28 | "domlobo", 29 | "scrocquesel", 30 | "SkebbZ" 31 | ] 32 | 33 | contributorsInfo = [ 34 | { 35 | "name": "marticliment", 36 | "link": "https://github.com/marticliment", 37 | "contributions": 1836 38 | }, 39 | { 40 | "name": "panther7", 41 | "link": "https://github.com/panther7", 42 | "contributions": 87 43 | }, 44 | { 45 | "name": "kirill-d-lappo", 46 | "link": "https://github.com/kirill-d-lappo", 47 | "contributions": 32 48 | }, 49 | { 50 | "name": "Lilobast", 51 | "link": "https://github.com/Lilobast", 52 | "contributions": 25 53 | }, 54 | { 55 | "name": "BoyceLig", 56 | "link": "https://github.com/BoyceLig", 57 | "contributions": 20 58 | }, 59 | { 60 | "name": "sinusinu", 61 | "link": "https://github.com/sinusinu", 62 | "contributions": 15 63 | }, 64 | { 65 | "name": "Seeloewen", 66 | "link": "https://github.com/Seeloewen", 67 | "contributions": 13 68 | }, 69 | { 70 | "name": "VenusGirl", 71 | "link": "https://github.com/VenusGirl", 72 | "contributions": 13 73 | }, 74 | { 75 | "name": "noname-ctrl", 76 | "link": "https://github.com/noname-ctrl", 77 | "contributions": 11 78 | }, 79 | { 80 | "name": "ShintakuNobuhiro", 81 | "link": "https://github.com/ShintakuNobuhiro", 82 | "contributions": 10 83 | }, 84 | { 85 | "name": "xsm1997", 86 | "link": "https://github.com/xsm1997", 87 | "contributions": 9 88 | }, 89 | { 90 | "name": "yrjarv", 91 | "link": "https://github.com/yrjarv", 92 | "contributions": 9 93 | }, 94 | { 95 | "name": "wanderleihuttel", 96 | "link": "https://github.com/wanderleihuttel", 97 | "contributions": 8 98 | }, 99 | { 100 | "name": "mmis1000", 101 | "link": "https://github.com/mmis1000", 102 | "contributions": 8 103 | }, 104 | { 105 | "name": "jameshamm", 106 | "link": "https://github.com/jameshamm", 107 | "contributions": 6 108 | }, 109 | { 110 | "name": "jmlcoliveira", 111 | "link": "https://github.com/jmlcoliveira", 112 | "contributions": 6 113 | }, 114 | { 115 | "name": "skanda890", 116 | "link": "https://github.com/skanda890", 117 | "contributions": 5 118 | }, 119 | { 120 | "name": "viktak", 121 | "link": "https://github.com/viktak", 122 | "contributions": 4 123 | }, 124 | { 125 | "name": "richeyphu", 126 | "link": "https://github.com/richeyphu", 127 | "contributions": 4 128 | }, 129 | { 130 | "name": "vedantmgoyal9", 131 | "link": "https://github.com/vedantmgoyal9", 132 | "contributions": 3 133 | }, 134 | { 135 | "name": "jstmrby", 136 | "link": "https://github.com/jstmrby", 137 | "contributions": 3 138 | }, 139 | { 140 | "name": "ppvnf", 141 | "link": "https://github.com/ppvnf", 142 | "contributions": 3 143 | }, 144 | { 145 | "name": "kinr0k", 146 | "link": "https://github.com/kinr0k", 147 | "contributions": 3 148 | }, 149 | { 150 | "name": "harel013", 151 | "link": "https://github.com/harel013", 152 | "contributions": 3 153 | }, 154 | { 155 | "name": "domlobo", 156 | "link": "https://github.com/domlobo", 157 | "contributions": 3 158 | }, 159 | { 160 | "name": "scrocquesel", 161 | "link": "https://github.com/scrocquesel", 162 | "contributions": 3 163 | }, 164 | { 165 | "name": "SkebbZ", 166 | "link": "https://github.com/SkebbZ", 167 | "contributions": 3 168 | } 169 | ] -------------------------------------------------------------------------------- /elevenclock/data/translations.py: -------------------------------------------------------------------------------- 1 | # Autogenerated file, do not modify it!!! 2 | 3 | untranslatedPercentage = { 4 | "ar": "67%", 5 | "bg": "42%", 6 | "bs": "5%", 7 | "cs": "95%", 8 | "da": "97%", 9 | "el": "17%", 10 | "et": "80%", 11 | "eu": "82%", 12 | "fa": "5%", 13 | "fi": "97%", 14 | "he": "81%", 15 | "hr": "77%", 16 | "hu": "87%", 17 | "id": "81%", 18 | "it": "97%", 19 | "ja": "88%", 20 | "lt": "18%", 21 | "lv": "67%", 22 | "nl": "84%", 23 | "pt_BR": "97%", 24 | "pt_PT": "97%", 25 | "ro": "80%", 26 | "sk": "28%", 27 | "sl": "97%", 28 | "sr": "18%", 29 | "sv": "97%", 30 | "th": "71%", 31 | "tr": "97%", 32 | "ua": "87%", 33 | "vi": "97%" 34 | } 35 | 36 | languageCredits = { 37 | "ar": [], 38 | "bg": [ 39 | { 40 | "name": "Hristo Vasilev", 41 | "link": "" 42 | }, 43 | { 44 | "name": "iconata", 45 | "link": "https://github.com/iconata" 46 | } 47 | ], 48 | "bs": [], 49 | "ca": [ 50 | { 51 | "name": "marticliment", 52 | "link": "https://github.com/marticliment" 53 | } 54 | ], 55 | "cs": [ 56 | { 57 | "name": "MatousAdamu", 58 | "link": "https://github.com/MatousAdamu" 59 | }, 60 | { 61 | "name": "panther7", 62 | "link": "https://github.com/panther7" 63 | }, 64 | { 65 | "name": "SunightMC", 66 | "link": "https://github.com/SunightMC" 67 | } 68 | ], 69 | "da": [ 70 | { 71 | "name": "Carsten Kristoffersen", 72 | "link": "" 73 | }, 74 | { 75 | "name": "Sebblich", 76 | "link": "" 77 | } 78 | ], 79 | "de": [ 80 | { 81 | "name": "Bikholf", 82 | "link": "" 83 | }, 84 | { 85 | "name": "schnurlos", 86 | "link": "https://github.com/schnurlos" 87 | }, 88 | { 89 | "name": "Seeloewen", 90 | "link": "https://github.com/Seeloewen" 91 | }, 92 | { 93 | "name": "tsloms", 94 | "link": "https://github.com/tsloms" 95 | }, 96 | { 97 | "name": "XenoKeks", 98 | "link": "https://github.com/XenoKeks" 99 | }, 100 | { 101 | "name": "yrjarv", 102 | "link": "https://github.com/yrjarv" 103 | } 104 | ], 105 | "el": [ 106 | { 107 | "name": "panos78", 108 | "link": "https://github.com/panos78" 109 | } 110 | ], 111 | "en": [ 112 | { 113 | "name": "marticliment", 114 | "link": "https://github.com/marticliment" 115 | } 116 | ], 117 | "es": [ 118 | { 119 | "name": "marticliment", 120 | "link": "https://github.com/marticliment" 121 | } 122 | ], 123 | "et": [], 124 | "eu": [ 125 | { 126 | "name": "Alexandre", 127 | "link": "" 128 | } 129 | ], 130 | "fa": [], 131 | "fi": [ 132 | { 133 | "name": "npsand", 134 | "link": "https://github.com/npsand" 135 | } 136 | ], 137 | "fr": [ 138 | { 139 | "name": "Lilobast", 140 | "link": "https://github.com/Lilobast" 141 | }, 142 | { 143 | "name": "scrocquesel", 144 | "link": "https://github.com/scrocquesel" 145 | } 146 | ], 147 | "he": [ 148 | { 149 | "name": "xRLx", 150 | "link": "" 151 | } 152 | ], 153 | "hr": [ 154 | { 155 | "name": "DMNz3", 156 | "link": "https://github.com/DMNz3" 157 | } 158 | ], 159 | "hu": [ 160 | { 161 | "name": "gidano", 162 | "link": "https://github.com/gidano" 163 | }, 164 | { 165 | "name": "jstmrby", 166 | "link": "https://github.com/jstmrby" 167 | }, 168 | { 169 | "name": "sympda.blog.hu", 170 | "link": "" 171 | }, 172 | { 173 | "name": "viktak.com", 174 | "link": "" 175 | } 176 | ], 177 | "id": [ 178 | { 179 | "name": "adinugrahasatya", 180 | "link": "https://github.com/adinugrahasatya" 181 | }, 182 | { 183 | "name": "FahrulID", 184 | "link": "" 185 | } 186 | ], 187 | "it": [ 188 | { 189 | "name": "Parapongo", 190 | "link": "https://github.com/Parapongo" 191 | }, 192 | { 193 | "name": "tuniel-xda", 194 | "link": "https://github.com/tuniel-xda" 195 | }, 196 | { 197 | "name": "zuidstroopwafel", 198 | "link": "https://github.com/zuidstroopwafel" 199 | } 200 | ], 201 | "ja": [ 202 | { 203 | "name": "Robot-Inventor", 204 | "link": "https://github.com/Robot-Inventor" 205 | }, 206 | { 207 | "name": "ShintakuNobuhiro", 208 | "link": "https://github.com/ShintakuNobuhiro" 209 | } 210 | ], 211 | "ko": [ 212 | { 213 | "name": "sinusinu", 214 | "link": "https://github.com/sinusinu" 215 | }, 216 | { 217 | "name": "VᴇɴᴜꜱGɪʀʟ (비너스걸)", 218 | "link": "" 219 | } 220 | ], 221 | "lt": [ 222 | { 223 | "name": "generic pleb", 224 | "link": "" 225 | } 226 | ], 227 | "lv": [ 228 | { 229 | "name": "Coool", 230 | "link": "https://github.com/Coool" 231 | }, 232 | { 233 | "name": "dejelnieks", 234 | "link": "https://github.com/dejelnieks" 235 | }, 236 | { 237 | "name": "shadow118", 238 | "link": "https://github.com/shadow118" 239 | } 240 | ], 241 | "nb": [ 242 | { 243 | "name": "yrjarv", 244 | "link": "https://github.com/yrjarv" 245 | } 246 | ], 247 | "nl": [ 248 | { 249 | "name": "Bugs", 250 | "link": "" 251 | }, 252 | { 253 | "name": "joosthoi1", 254 | "link": "https://github.com/joosthoi1" 255 | }, 256 | { 257 | "name": "jordyegnl", 258 | "link": "https://github.com/jordyegnl" 259 | } 260 | ], 261 | "nn": [ 262 | { 263 | "name": "yrjarv", 264 | "link": "https://github.com/yrjarv" 265 | } 266 | ], 267 | "pl": [ 268 | { 269 | "name": "Fresta", 270 | "link": "" 271 | }, 272 | { 273 | "name": "PabloMat", 274 | "link": "https://github.com/PabloMat" 275 | } 276 | ], 277 | "pt_BR": [ 278 | { 279 | "name": "gumbarros", 280 | "link": "https://github.com/gumbarros" 281 | }, 282 | { 283 | "name": "maisondasilva", 284 | "link": "https://github.com/maisondasilva" 285 | }, 286 | { 287 | "name": "wanderleihuttel", 288 | "link": "https://github.com/wanderleihuttel" 289 | } 290 | ], 291 | "pt_PT": [ 292 | { 293 | "name": "jmlcoliveira", 294 | "link": "https://github.com/jmlcoliveira" 295 | }, 296 | { 297 | "name": "Miguel Couto", 298 | "link": "" 299 | } 300 | ], 301 | "ro": [], 302 | "ru": [ 303 | { 304 | "name": "Denisskas", 305 | "link": "https://github.com/Denisskas" 306 | }, 307 | { 308 | "name": "kira-lappo", 309 | "link": "https://github.com/kira-lappo" 310 | }, 311 | { 312 | "name": "Risen", 313 | "link": "" 314 | } 315 | ], 316 | "sk": [ 317 | { 318 | "name": "metmanik", 319 | "link": "https://github.com/metmanik" 320 | } 321 | ], 322 | "sl": [ 323 | { 324 | "name": "rumplin", 325 | "link": "https://github.com/rumplin" 326 | } 327 | ], 328 | "sr": [ 329 | { 330 | "name": "Stefan Marjanov", 331 | "link": "" 332 | } 333 | ], 334 | "sv": [ 335 | { 336 | "name": "cjal95", 337 | "link": "" 338 | }, 339 | { 340 | "name": "Noffe", 341 | "link": "" 342 | }, 343 | { 344 | "name": "yrjarv", 345 | "link": "https://github.com/yrjarv" 346 | } 347 | ], 348 | "th": [ 349 | { 350 | "name": "richeyphu", 351 | "link": "https://github.com/richeyphu" 352 | } 353 | ], 354 | "tr": [ 355 | { 356 | "name": "teknoist-(Mahmut Sözen)", 357 | "link": "https://github.com/teknoist-(Mahmut Sözen)" 358 | } 359 | ], 360 | "ua": [ 361 | { 362 | "name": "p4rzivalll", 363 | "link": "https://github.com/p4rzivalll" 364 | } 365 | ], 366 | "vi": [ 367 | { 368 | "name": "legendsjoon", 369 | "link": "https://github.com/legendsjoon" 370 | }, 371 | { 372 | "name": "Leoodz", 373 | "link": "https://github.com/Leoodz" 374 | }, 375 | { 376 | "name": "lequan81", 377 | "link": "https://github.com/lequan81" 378 | }, 379 | { 380 | "name": "Quochieu0211", 381 | "link": "https://github.com/Quochieu0211" 382 | }, 383 | { 384 | "name": "tnhung2011", 385 | "link": "https://github.com/tnhung2011" 386 | } 387 | ], 388 | "zh_CN": [ 389 | { 390 | "name": "BoyceLig", 391 | "link": "https://github.com/BoyceLig" 392 | }, 393 | { 394 | "name": "CnYeSheng", 395 | "link": "" 396 | }, 397 | { 398 | "name": "hlgsdx", 399 | "link": "https://github.com/hlgsdx" 400 | }, 401 | { 402 | "name": "jmlcoliveira", 403 | "link": "https://github.com/jmlcoliveira" 404 | }, 405 | { 406 | "name": "sino1641", 407 | "link": "https://github.com/sino1641" 408 | }, 409 | { 410 | "name": "strombooli", 411 | "link": "https://github.com/strombooli" 412 | } 413 | ], 414 | "zh_TW": [ 415 | { 416 | "name": "BoyceLig", 417 | "link": "https://github.com/BoyceLig" 418 | }, 419 | { 420 | "name": "CnYeSheng", 421 | "link": "https://github.com/CnYeSheng" 422 | }, 423 | { 424 | "name": "mmis1000", 425 | "link": "https://github.com/mmis1000" 426 | }, 427 | { 428 | "name": "SiderealArt", 429 | "link": "https://github.com/SiderealArt" 430 | } 431 | ] 432 | } -------------------------------------------------------------------------------- /elevenclock/elevenclock.spec: -------------------------------------------------------------------------------- 1 | # -*- mode: python ; coding: utf-8 -*- 2 | 3 | block_cipher = None 4 | 5 | import importlib, os 6 | 7 | #package_imports = [['qtmodern', ['resources/frameless.qss', 'resources/style.qss']]] 8 | 9 | 10 | 11 | a = Analysis(['__init__.py'], 12 | pathex=['Y:\ElevenClock-Store\elevenclock_bin'], 13 | # binaries=[('*.pyc', '.')], 14 | datas=[('resources/', 'resources/'), ("lang/", "lang/")], 15 | hiddenimports=["win32gui"], 16 | hookspath=[], 17 | runtime_hooks=[], 18 | excludes=['eel', 'tkinter', "PyQt5", "PySide2", "pygame", "numpy", "matplotlib", "elevenclock", "zroya"], 19 | win_no_prefer_redirects=False, 20 | win_private_assemblies=False, 21 | cipher=block_cipher, 22 | noarchive=False) 23 | 24 | 25 | pyz = PYZ(a.pure, a.zipped_data, 26 | cipher=block_cipher) 27 | exe = EXE( 28 | pyz, 29 | a.scripts, 30 | [], 31 | exclude_binaries=True, 32 | name='elevenclock', 33 | debug=False, 34 | bootloader_ignore_signals=False, 35 | strip=False, 36 | upx=False, 37 | console=False, 38 | disable_windowed_traceback=False, 39 | argv_emulation=False, 40 | target_arch=None, 41 | codesign_identity=None, 42 | entitlements_file=None, 43 | contents_directory='.', 44 | icon="resources/icon.ico", 45 | version="../elevenclock-version-info" 46 | ) 47 | 48 | 49 | coll = COLLECT( 50 | exe, 51 | a.binaries, 52 | # a.zipfiles, 53 | a.datas, 54 | strip=False, 55 | upx=True, 56 | upx_exclude=[], 57 | name='ElevenClock', 58 | ) -------------------------------------------------------------------------------- /elevenclock/external/FramelessWindow.py: -------------------------------------------------------------------------------- 1 | from ctypes import c_int, windll 2 | windll.shcore.SetProcessDpiAwareness(c_int(2)) 3 | 4 | # 5 | # 6 | # This file comes from https://github.com/mustafaahci/FramelessWindow 7 | # 8 | # 9 | 10 | import winreg 11 | from win32mica import ApplyMica, MicaTheme 12 | 13 | from ctypes.wintypes import DWORD, LONG, LPCVOID 14 | 15 | from win32con import PAN_SERIF_SQUARE, WM_NCCALCSIZE, GWL_STYLE, WM_NCHITTEST, WS_MAXIMIZEBOX, WS_THICKFRAME, \ 16 | WS_CAPTION, HTTOPLEFT, HTBOTTOMRIGHT, HTTOPRIGHT, HTBOTTOMLEFT, \ 17 | HTTOP, HTBOTTOM, HTLEFT, HTRIGHT, HTCAPTION, WS_POPUP, WS_SYSMENU, WS_MINIMIZEBOX 18 | 19 | 20 | from PySide6.QtCore import * 21 | from PySide6.QtGui import * 22 | from PySide6.QtWidgets import * 23 | from external.blurwindow import ExtendFrameIntoClientArea 24 | 25 | def readRegedit(aKey, sKey, default, storage=winreg.HKEY_CURRENT_USER): 26 | registry = winreg.ConnectRegistry(None, storage) 27 | reg_keypath = aKey 28 | try: 29 | reg_key = winreg.OpenKey(registry, reg_keypath) 30 | except FileNotFoundError as e: 31 | return default 32 | except Exception as e: 33 | print(e) 34 | return default 35 | 36 | for i in range(1024): 37 | try: 38 | value_name, value, _ = winreg.EnumValue(reg_key, i) 39 | if value_name == sKey: 40 | return value 41 | except OSError as e: 42 | return default 43 | except Exception as e: 44 | print(e) 45 | return default 46 | 47 | def isWindowDark() -> bool: 48 | return readRegedit(r"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize", "AppsUseLightTheme", 1)==0 49 | 50 | 51 | class QFramelessWindow(QMainWindow): 52 | BORDER_WIDTH = 10 53 | 54 | def __init__(self, parent=None): 55 | self.updateSize = True 56 | self.settingsWidget = QWidget() 57 | super().__init__(parent=parent) 58 | self.hwnd = self.winId().__int__() 59 | self.setObjectName("QFramelessWindow") 60 | self.setWindowFlags(Qt.WindowType.Window | Qt.WindowType.CustomizeWindowHint) 61 | #window_style = win32gui.GetWindowLong(self.hwnd, GWL_STYLE) 62 | #win32gui.SetWindowLong(self.hwnd, GWL_STYLE, window_style | WS_POPUP | WS_THICKFRAME | WS_CAPTION | WS_SYSMENU | WS_MAXIMIZEBOX | WS_MINIMIZEBOX) 63 | 64 | ExtendFrameIntoClientArea(self.winId().__int__()) 65 | 66 | self.setAutoFillBackground(True) 67 | 68 | # Window Widgets 69 | self.resize(800, 600) 70 | self._layout = QVBoxLayout() 71 | self._layout.setContentsMargins(0, 0, 0, 0) 72 | self._layout.setSpacing(0) 73 | 74 | 75 | # main widget is here 76 | self.mainWidget = QWidget() 77 | self.mainWidgetLayout = QVBoxLayout() 78 | self.mainWidgetLayout.setContentsMargins(0, 0, 0, 0) 79 | self.mainWidget.setLayout(self.mainWidgetLayout) 80 | self.mainWidget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) 81 | 82 | # set background color 83 | p = self.palette() 84 | p.setColor(self.backgroundRole(), QColor("#272727")) 85 | self.setPalette(p) 86 | 87 | self._layout.addWidget(self.mainWidget) 88 | self.setLayout(self._layout) 89 | 90 | def showEvent(self, event) -> None: 91 | ApplyMica(self.winId(), MicaTheme.DARK if isWindowDark() else MicaTheme.LIGHT) 92 | return super().showEvent(event) 93 | 94 | def moveEvent(self, event) -> None: 95 | self.repaint() 96 | return super().moveEvent(event) 97 | 98 | 99 | class QFramelessDialog(QFramelessWindow): 100 | clicked = Signal(QDialogButtonBox.ButtonRole) 101 | def __init__(self, parent=None, closeOnClick=True, xoff = 0, yoff = 0): 102 | self.xoff = xoff 103 | self.yoff = yoff 104 | super().__init__(parent=None) 105 | self.windows = parent 106 | self.closeOnClick = closeOnClick 107 | self.setAutoFillBackground(True) 108 | self.setAttribute(Qt.WA_StyledBackground) 109 | l = QVBoxLayout() 110 | l.setContentsMargins(0, 0, 0, 0) 111 | self.title = QLabel("Title") 112 | self.title.setStyleSheet(f"font-size: 16pt;padding: {self.getPx(30)}px; padding-bottom: {self.getPx(5)}px;") 113 | l.addWidget(self.title) 114 | self.body = QLabel("This is the body. Here comes the warning") 115 | self.body.setOpenExternalLinks(True) 116 | self.body.setStyleSheet(f"font-size: 10pt;font-weight: light;font-family: \"Segoe UI Variable Display\";padding: {self.getPx(30)}px; padding-top: {self.getPx(5)}px;") 117 | l.addWidget(self.body) 118 | self.buttonWidget = QDialogButtonBox(self) 119 | self.buttonWidget.setObjectName("dialogButtonWidget") 120 | self.buttonWidget.setStyleSheet(f"QPushButton{{margin: {self.getPx(2)}px;height: {self.getPx(30)}px;}}") 121 | self.buttonWidget.clicked.connect(self.click) 122 | bwd = QWidget() 123 | bwd.setContentsMargins(self.getPx(15), self.getPx(15), self.getPx(15), self.getPx(15)) 124 | bwd.setObjectName("dialogButtonWidget") 125 | tl = QVBoxLayout() 126 | tl.addWidget(self.buttonWidget) 127 | bwd.setLayout(tl) 128 | l.addWidget(bwd) 129 | self.setLayout(l) 130 | w = QWidget(self) 131 | w.setObjectName("bgDialog") 132 | w.setLayout(l) 133 | self.setCentralWidget(w) 134 | 135 | self.setWindowModality(Qt.WindowModal) 136 | self.setWindowFlag(Qt.WindowContextHelpButtonHint, False) 137 | self.setWindowFlag(Qt.WindowCloseButtonHint, False) 138 | 139 | def closeEvent(self, event: QCloseEvent) -> None: 140 | #self.parent().window().setWindowOpacity(1) 141 | return super().closeEvent(event) 142 | 143 | def click(self, btn: QAbstractButton) -> None: 144 | btnRole = self.buttonWidget.buttonRole(btn) 145 | self.clicked.emit(btnRole) 146 | if self.closeOnClick: 147 | self.close() 148 | 149 | def addButton(self, text: str, btnRole: QDialogButtonBox.ButtonRole, action: object = None) -> None: 150 | b = self.buttonWidget.addButton(text, btnRole) 151 | if action: 152 | b.clicked.connect(action) 153 | 154 | def setDefaultButtonRole(self, btnRole: QDialogButtonBox.ButtonRole, stylesheet: str) -> None: 155 | for btn in self.buttonWidget.buttons(): 156 | btn: QPushButton 157 | if self.buttonWidget.buttonRole(btn) == btnRole: 158 | btn.setObjectName("AccentButton") 159 | btn.setStyleSheet(stylesheet+f"QPushButton{{margin: {self.getPx(2)}px;height: {self.getPx(30)}px;}}") 160 | break 161 | 162 | def getBtn(self, btnRole: QDialogButtonBox.ButtonRole) -> QPushButton: 163 | for btn in self.buttonWidget.buttons(): 164 | btn: QPushButton 165 | if self.buttonWidget.buttonRole(btn) == btnRole: 166 | return btn 167 | 168 | 169 | def setTitle(self, t: str): 170 | self.title.setText(t) 171 | pass 172 | 173 | def setText(self, t: str): 174 | self.body.setText(t) 175 | pass 176 | 177 | def parent(self) -> QWidget: 178 | return super().parent() 179 | 180 | def showEvent(self, event: QShowEvent) -> None: 181 | self.setFixedSize(self.minimumSizeHint()) 182 | w = self.width() 183 | h = self.height() 184 | try: 185 | self.move( 186 | self.xoff+self.windows.x()+(self.windows.width()-w)//2, 187 | self.yoff+self.windows.y()+(self.windows.height()-h)//2 188 | ) 189 | except AttributeError: 190 | pass 191 | #self.parent().window().setWindowOpacity(0.7) 192 | return super().showEvent(event) 193 | 194 | def getPx(self, i: int) -> int: 195 | return i 196 | 197 | def get6px(self, i: int) -> int: 198 | return round(i*self.screen().devicePixelRatio()) 199 | 200 | 201 | 202 | 203 | if __name__ == "__main__": 204 | from ctypes import c_int, windll 205 | windll.shcore.SetProcessDpiAwareness(c_int(2)) 206 | import __init__ -------------------------------------------------------------------------------- /elevenclock/external/WnfReader.py: -------------------------------------------------------------------------------- 1 | # 2 | # 3 | # 4 | # File modified from https://github.com/ionescu007/wnfun 5 | # 6 | # Some parts have been removed because they were useless in the context this script is intended 7 | # Additionally, the script has been optimized 8 | # 9 | # All rights reserved to Alex Ionescu. 10 | # See the license here: https://github.com/ionescu007/wnfun/blob/master/LICENSE 11 | # 12 | # 13 | 14 | 15 | """ 16 | 17 | Copyright (c) 2018 Gabrielle Viala. All Rights Reserved. 18 | https://blog.quarkslab.com/author/gwaby.html 19 | 20 | """ 21 | import ctypes 22 | 23 | ZwQueryWnfStateData = ctypes.windll.ntdll.ZwQueryWnfStateData 24 | ZwUpdateWnfStateData = ctypes.windll.ntdll.ZwUpdateWnfStateData 25 | 26 | changeStamp = ctypes.c_ulong(0) 27 | dataBuffer = ctypes.create_string_buffer(4096) 28 | bufferSize = ctypes.c_ulong(ctypes.sizeof(dataBuffer)) 29 | nullBfr = ctypes.c_ulong(0) 30 | 31 | def ReadWnfData(StateName): 32 | global bufferSize, changeStamp, dataBuffer 33 | StateName = ctypes.c_longlong(StateName) 34 | res = ZwQueryWnfStateData(ctypes.byref(StateName), 35 | 0, 0, 36 | ctypes.byref(changeStamp), 37 | ctypes.byref(dataBuffer), 38 | ctypes.byref(bufferSize) 39 | ) 40 | readAccess = 0 if res !=0 else 1 41 | bufferSize = nullBfr if res !=0 else bufferSize 42 | return readAccess, changeStamp.value, dataBuffer, bufferSize.value 43 | 44 | 45 | 46 | def DoRead(StateName) -> bytes: 47 | _, _, dataBuffer, bufferSize = ReadWnfData(int(StateName, 16)) 48 | return dataBuffer.raw[0:bufferSize] 49 | 50 | 51 | 52 | def DoWrite(StateName, Data): 53 | StateName = ctypes.c_longlong(int(StateName, 16)) 54 | dataBuffer = ctypes.c_char_p(Data) 55 | bufferSize = len(Data) 56 | status = ZwUpdateWnfStateData(ctypes.byref(StateName), dataBuffer, bufferSize, 0, 0, 0, 0) 57 | status = ctypes.c_ulong(status).value 58 | 59 | if status == 0: 60 | return True 61 | else: 62 | print('[Error] Could not write for this statename: 0x{:x}'.format(status)) 63 | return False 64 | 65 | # 66 | # End of https://github.com/ionescu007/wnfun code 67 | # 68 | # 69 | # The following parts are simple definitions 70 | # 71 | 72 | def isFocusAssistEnabled() -> bool: 73 | try: 74 | return not DoRead("0xd83063ea3bf1c75") == b'\x00\x00\x00\x00' 75 | except Exception as e: 76 | print(e) 77 | return False 78 | 79 | 80 | def getNotificationNumber() -> int: 81 | try: 82 | res = DoRead("0xd83063ea3bc1035")[0] 83 | assert type(res) == int, "Invalid value for notification number" 84 | return int(res) 85 | except Exception as e: 86 | print(e) 87 | return 0 88 | -------------------------------------------------------------------------------- /elevenclock/external/blurwindow.py: -------------------------------------------------------------------------------- 1 | # source: https://github.com/Opticos/GWSL-Source/blob/master/blur.py , https://www.cnblogs.com/zhiyiYo/p/14659981.html , https://github.com/ifwe/digsby/blob/master/digsby/src/gui/vista.py 2 | import platform 3 | import ctypes 4 | 5 | # Main code taken from https://pypi.org/project/BlurWindow/ 6 | 7 | if platform.system() == 'Windows': 8 | from ctypes.wintypes import DWORD, BOOL, HRGN, HWND 9 | user32 = ctypes.windll.user32 10 | dwm = ctypes.windll.dwmapi 11 | 12 | 13 | class ACCENTPOLICY(ctypes.Structure): 14 | _fields_ = [ 15 | ("AccentState", ctypes.c_uint), 16 | ("AccentFlags", ctypes.c_uint), 17 | ("GradientColor", ctypes.c_uint), 18 | ("AnimationId", ctypes.c_uint) 19 | ] 20 | 21 | 22 | class WINDOWCOMPOSITIONATTRIBDATA(ctypes.Structure): 23 | _fields_ = [ 24 | ("Attribute", ctypes.c_int), 25 | ("Data", ctypes.POINTER(ctypes.c_int)), 26 | ("SizeOfData", ctypes.c_size_t) 27 | ] 28 | 29 | 30 | class DWM_BLURBEHIND(ctypes.Structure): 31 | _fields_ = [ 32 | ('dwFlags', DWORD), 33 | ('fEnable', BOOL), 34 | ('hRgnBlur', HRGN), 35 | ('fTransitionOnMaximized', BOOL) 36 | ] 37 | 38 | 39 | class MARGINS(ctypes.Structure): 40 | _fields_ = [("cxLeftWidth", ctypes.c_int), 41 | ("cxRightWidth", ctypes.c_int), 42 | ("cyTopHeight", ctypes.c_int), 43 | ("cyBottomHeight", ctypes.c_int) 44 | ] 45 | 46 | 47 | SetWindowCompositionAttribute = user32.SetWindowCompositionAttribute 48 | 49 | def ExtendFrameIntoClientArea(hwnd): 50 | 51 | class _MARGINS(ctypes.Structure): 52 | _fields_ = [("cxLeftWidth", ctypes.c_int), 53 | ("cxRightWidth", ctypes.c_int), 54 | ("cyTopHeight", ctypes.c_int), 55 | ("cyBottomHeight", ctypes.c_int) 56 | ] 57 | 58 | DwmExtendFrameIntoClientArea = dwm.DwmExtendFrameIntoClientArea 59 | m = _MARGINS() 60 | m.cxLeftWidth = -1 61 | m.cxRightWidth = -1 62 | m.cyTopHeight = -1 63 | m.cyBottomHeight = -1 64 | return DwmExtendFrameIntoClientArea(hwnd, m) 65 | 66 | def HEXtoRGBAint(HEX:str): 67 | alpha = HEX[7:] 68 | blue = HEX[5:7] 69 | green = HEX[3:5] 70 | red = HEX[1:3] 71 | 72 | gradientColor = alpha + blue + green + red 73 | return int(gradientColor, base=16) 74 | 75 | 76 | def ApplyBlur(hwnd, hexColor=False, Acrylic=False, Dark=False, smallCorners=False): 77 | accent = ACCENTPOLICY() 78 | accent.AccentState = 3 #Default window Blur #ACCENT_ENABLE_BLURBEHIND 79 | 80 | gradientColor = 0 81 | 82 | if hexColor != False: 83 | gradientColor = HEXtoRGBAint(hexColor) 84 | accent.AccentFlags = 2 #Window Blur With Accent Color #ACCENT_ENABLE_TRANSPARENTGRADIENT 85 | 86 | if Acrylic: 87 | accent.AccentState = 4 #UWP but LAG #ACCENT_ENABLE_ACRYLICBLURBEHIND 88 | if hexColor == False: #UWP without color is translucent 89 | accent.AccentFlags = 2 90 | gradientColor = HEXtoRGBAint('#12121240') #placeholder color 91 | 92 | accent.GradientColor = gradientColor 93 | 94 | data = WINDOWCOMPOSITIONATTRIBDATA() 95 | data.Attribute = 19 #WCA_ACCENT_POLICY 96 | data.SizeOfData = ctypes.sizeof(accent) 97 | data.Data = ctypes.cast(ctypes.pointer(accent), ctypes.POINTER(ctypes.c_int)) 98 | 99 | SetWindowCompositionAttribute(int(hwnd), data) 100 | 101 | if Dark: 102 | data.Attribute = 26 #WCA_USEDARKMODECOLORS 103 | 104 | SetWindowCompositionAttribute(int(hwnd), data) 105 | 106 | 107 | DwmSetWindowAttribute = dwm.DwmSetWindowAttribute # Add rounded borders (My addition) 108 | DwmSetWindowAttribute(int(hwnd), 33, ctypes.byref(ctypes.c_int(3 if smallCorners else 2)), ctypes.sizeof(ctypes.c_int)) # Add rounded borders (My addition) 109 | 110 | 111 | 112 | def GlobalBlur(HWND,hexColor=False,Acrylic=False,Dark=False,QWidget=None, smallCorners=False): 113 | ApplyBlur(HWND,hexColor,Acrylic,Dark, smallCorners=smallCorners) 114 | -------------------------------------------------------------------------------- /elevenclock/external/timezones.py: -------------------------------------------------------------------------------- 1 | # File taken from https://github.com/regebro/tzlocal/blob/master/tzlocal/windows_tz.py on 2/4/2022 under the MIT license 2 | 3 | # This file is autogenerated by the update_windows_mapping.py script 4 | # Do not edit. 5 | win_tz = {'AUS Central Standard Time': 'Australia/Darwin', 6 | 'AUS Eastern Standard Time': 'Australia/Sydney', 7 | 'Afghanistan Standard Time': 'Asia/Kabul', 8 | 'Alaskan Standard Time': 'America/Anchorage', 9 | 'Aleutian Standard Time': 'America/Adak', 10 | 'Altai Standard Time': 'Asia/Barnaul', 11 | 'Arab Standard Time': 'Asia/Riyadh', 12 | 'Arabian Standard Time': 'Asia/Dubai', 13 | 'Arabic Standard Time': 'Asia/Baghdad', 14 | 'Argentina Standard Time': 'America/Buenos_Aires', 15 | 'Astrakhan Standard Time': 'Europe/Astrakhan', 16 | 'Atlantic Standard Time': 'America/Halifax', 17 | 'Aus Central W. Standard Time': 'Australia/Eucla', 18 | 'Azerbaijan Standard Time': 'Asia/Baku', 19 | 'Azores Standard Time': 'Atlantic/Azores', 20 | 'Bahia Standard Time': 'America/Bahia', 21 | 'Bangladesh Standard Time': 'Asia/Dhaka', 22 | 'Belarus Standard Time': 'Europe/Minsk', 23 | 'Bougainville Standard Time': 'Pacific/Bougainville', 24 | 'Canada Central Standard Time': 'America/Regina', 25 | 'Cape Verde Standard Time': 'Atlantic/Cape_Verde', 26 | 'Caucasus Standard Time': 'Asia/Yerevan', 27 | 'Cen. Australia Standard Time': 'Australia/Adelaide', 28 | 'Central America Standard Time': 'America/Guatemala', 29 | 'Central Asia Standard Time': 'Asia/Almaty', 30 | 'Central Brazilian Standard Time': 'America/Cuiaba', 31 | 'Central Europe Standard Time': 'Europe/Budapest', 32 | 'Central European Standard Time': 'Europe/Warsaw', 33 | 'Central Pacific Standard Time': 'Pacific/Guadalcanal', 34 | 'Central Standard Time': 'America/Chicago', 35 | 'Central Standard Time (Mexico)': 'America/Mexico_City', 36 | 'Chatham Islands Standard Time': 'Pacific/Chatham', 37 | 'China Standard Time': 'Asia/Shanghai', 38 | 'Cuba Standard Time': 'America/Havana', 39 | 'Dateline Standard Time': 'Etc/GMT+12', 40 | 'E. Africa Standard Time': 'Africa/Nairobi', 41 | 'E. Australia Standard Time': 'Australia/Brisbane', 42 | 'E. Europe Standard Time': 'Europe/Chisinau', 43 | 'E. South America Standard Time': 'America/Sao_Paulo', 44 | 'Easter Island Standard Time': 'Pacific/Easter', 45 | 'Eastern Standard Time': 'America/New_York', 46 | 'Eastern Standard Time (Mexico)': 'America/Cancun', 47 | 'Egypt Standard Time': 'Africa/Cairo', 48 | 'Ekaterinburg Standard Time': 'Asia/Yekaterinburg', 49 | 'FLE Standard Time': 'Europe/Kiev', 50 | 'Fiji Standard Time': 'Pacific/Fiji', 51 | 'GMT Standard Time': 'Europe/London', 52 | 'GTB Standard Time': 'Europe/Bucharest', 53 | 'Georgian Standard Time': 'Asia/Tbilisi', 54 | 'Greenland Standard Time': 'America/Godthab', 55 | 'Greenwich Standard Time': 'Atlantic/Reykjavik', 56 | 'Haiti Standard Time': 'America/Port-au-Prince', 57 | 'Hawaiian Standard Time': 'Pacific/Honolulu', 58 | 'India Standard Time': 'Asia/Calcutta', 59 | 'Iran Standard Time': 'Asia/Tehran', 60 | 'Israel Standard Time': 'Asia/Jerusalem', 61 | 'Jordan Standard Time': 'Asia/Amman', 62 | 'Kaliningrad Standard Time': 'Europe/Kaliningrad', 63 | 'Korea Standard Time': 'Asia/Seoul', 64 | 'Libya Standard Time': 'Africa/Tripoli', 65 | 'Line Islands Standard Time': 'Pacific/Kiritimati', 66 | 'Lord Howe Standard Time': 'Australia/Lord_Howe', 67 | 'Magadan Standard Time': 'Asia/Magadan', 68 | 'Magallanes Standard Time': 'America/Punta_Arenas', 69 | 'Marquesas Standard Time': 'Pacific/Marquesas', 70 | 'Mauritius Standard Time': 'Indian/Mauritius', 71 | 'Middle East Standard Time': 'Asia/Beirut', 72 | 'Montevideo Standard Time': 'America/Montevideo', 73 | 'Morocco Standard Time': 'Africa/Casablanca', 74 | 'Mountain Standard Time': 'America/Denver', 75 | 'Mountain Standard Time (Mexico)': 'America/Chihuahua', 76 | 'Myanmar Standard Time': 'Asia/Rangoon', 77 | 'N. Central Asia Standard Time': 'Asia/Novosibirsk', 78 | 'Namibia Standard Time': 'Africa/Windhoek', 79 | 'Nepal Standard Time': 'Asia/Katmandu', 80 | 'New Zealand Standard Time': 'Pacific/Auckland', 81 | 'Newfoundland Standard Time': 'America/St_Johns', 82 | 'Norfolk Standard Time': 'Pacific/Norfolk', 83 | 'North Asia East Standard Time': 'Asia/Irkutsk', 84 | 'North Asia Standard Time': 'Asia/Krasnoyarsk', 85 | 'North Korea Standard Time': 'Asia/Pyongyang', 86 | 'Omsk Standard Time': 'Asia/Omsk', 87 | 'Pacific SA Standard Time': 'America/Santiago', 88 | 'Pacific Standard Time': 'America/Los_Angeles', 89 | 'Pacific Standard Time (Mexico)': 'America/Tijuana', 90 | 'Pakistan Standard Time': 'Asia/Karachi', 91 | 'Paraguay Standard Time': 'America/Asuncion', 92 | 'Qyzylorda Standard Time': 'Asia/Qyzylorda', 93 | 'Romance Standard Time': 'Europe/Paris', 94 | 'Russia Time Zone 10': 'Asia/Srednekolymsk', 95 | 'Russia Time Zone 11': 'Asia/Kamchatka', 96 | 'Russia Time Zone 3': 'Europe/Samara', 97 | 'Russian Standard Time': 'Europe/Moscow', 98 | 'SA Eastern Standard Time': 'America/Cayenne', 99 | 'SA Pacific Standard Time': 'America/Bogota', 100 | 'SA Western Standard Time': 'America/La_Paz', 101 | 'SE Asia Standard Time': 'Asia/Bangkok', 102 | 'Saint Pierre Standard Time': 'America/Miquelon', 103 | 'Sakhalin Standard Time': 'Asia/Sakhalin', 104 | 'Samoa Standard Time': 'Pacific/Apia', 105 | 'Sao Tome Standard Time': 'Africa/Sao_Tome', 106 | 'Saratov Standard Time': 'Europe/Saratov', 107 | 'Singapore Standard Time': 'Asia/Singapore', 108 | 'South Africa Standard Time': 'Africa/Johannesburg', 109 | 'South Sudan Standard Time': 'Africa/Juba', 110 | 'Sri Lanka Standard Time': 'Asia/Colombo', 111 | 'Sudan Standard Time': 'Africa/Khartoum', 112 | 'Syria Standard Time': 'Asia/Damascus', 113 | 'Taipei Standard Time': 'Asia/Taipei', 114 | 'Tasmania Standard Time': 'Australia/Hobart', 115 | 'Tocantins Standard Time': 'America/Araguaina', 116 | 'Tokyo Standard Time': 'Asia/Tokyo', 117 | 'Tomsk Standard Time': 'Asia/Tomsk', 118 | 'Tonga Standard Time': 'Pacific/Tongatapu', 119 | 'Transbaikal Standard Time': 'Asia/Chita', 120 | 'Turkey Standard Time': 'Europe/Istanbul', 121 | 'Turks And Caicos Standard Time': 'America/Grand_Turk', 122 | 'US Eastern Standard Time': 'America/Indianapolis', 123 | 'US Mountain Standard Time': 'America/Phoenix', 124 | 'UTC': 'Etc/UTC', 125 | 'UTC+12': 'Etc/GMT-12', 126 | 'UTC+13': 'Etc/GMT-13', 127 | 'UTC-02': 'Etc/GMT+2', 128 | 'UTC-08': 'Etc/GMT+8', 129 | 'UTC-09': 'Etc/GMT+9', 130 | 'UTC-11': 'Etc/GMT+11', 131 | 'Ulaanbaatar Standard Time': 'Asia/Ulaanbaatar', 132 | 'Venezuela Standard Time': 'America/Caracas', 133 | 'Vladivostok Standard Time': 'Asia/Vladivostok', 134 | 'Volgograd Standard Time': 'Europe/Volgograd', 135 | 'W. Australia Standard Time': 'Australia/Perth', 136 | 'W. Central Africa Standard Time': 'Africa/Lagos', 137 | 'W. Europe Standard Time': 'Europe/Berlin', 138 | 'W. Mongolia Standard Time': 'Asia/Hovd', 139 | 'West Asia Standard Time': 'Asia/Tashkent', 140 | 'West Bank Standard Time': 'Asia/Hebron', 141 | 'West Pacific Standard Time': 'Pacific/Port_Moresby', 142 | 'Yakutsk Standard Time': 'Asia/Yakutsk', 143 | 'Yukon Standard Time': 'America/Whitehorse'} 144 | 145 | # Old name for the win_tz variable: 146 | tz_names = win_tz -------------------------------------------------------------------------------- /elevenclock/globals.py: -------------------------------------------------------------------------------- 1 | from ctypes import c_int, windll 2 | windll.shcore.SetProcessDpiAwareness(c_int(2)) 3 | 4 | 5 | import io 6 | from types import FunctionType 7 | 8 | 9 | from PySide6.QtGui import * 10 | from PySide6.QtCore import * 11 | from PySide6.QtWidgets import * 12 | 13 | BLOCK_RELOAD: bool = False 14 | 15 | def loadTimeFormat(): 16 | print("🟡 loadTimeFormat function has not been defined yet!") 17 | 18 | def updateIfPossible(): 19 | print("🟡 updateIfPossible function has not been defined yet!") 20 | 21 | def restartClocks(): 22 | print("🟡 restartClocks function has not been defined yet!") 23 | 24 | def closeClocks(): 25 | print("🟡 closeClocks function has not been defined yet!") 26 | 27 | def _(a): 28 | try: 29 | raise NotImplementedError("_ function has not been defined!") 30 | except Exception as e: 31 | print("🟠", e) 32 | return a 33 | 34 | 35 | app: QApplication = None 36 | buffer: io.StringIO = None 37 | old_stdout: io.StringIO = None 38 | mController: object = None 39 | TrayIcon: QSystemTrayIcon = None 40 | SettingsWindow: QMainWindow = None 41 | ww: QMainWindow = None 42 | TemporaryDirectory: str = None 43 | dateTimeFormat: str = "%HH:%M\n%A\n%d/%m/%Y" 44 | settingsCache = {} 45 | canEraseTempDirs: bool = False 46 | newInstanceLaunched: bool = False 47 | 48 | windowRects: dict[int, tuple[int, int, int, int]] = {} 49 | windowTexts: dict[int, str] = {} 50 | windowVisible: dict[int, bool] = {} 51 | windowList: list[int] = [] 52 | newWindowList: list[int] = [] 53 | foregroundHwnd: int = 0 54 | doCacheHost: bool = False 55 | notTextInputHost: list[int] = [] 56 | cachedInputHosts: list[int] = [] 57 | previousFullscreenHwnd: dict[int, int] = {} 58 | blockFullscreenCheck: bool = False 59 | clocks: list[QWidget] = [] 60 | 61 | CustomSettings: type = None # This will be used then from the tools module to load CustomSettings instances (see function tools.py>openClockSettings()) 62 | 63 | blacklistedFullscreenApps: tuple = ("", "Program Manager", "NVIDIA GeForce Overlay", "NVIDIA GeForce Overlay DT", "ElenenClock_IgnoreFullscreenEvent") # The "" codes for titleless windows 64 | 65 | 66 | settingsList: list[str] = [ 67 | "DisableAutoCheckForUpdates", 68 | "DisableAutoInstallUpdates", 69 | "EnableSilentUpdates", 70 | "BypassDomainAuthCheck", 71 | "DisableSystemTray", 72 | "HideTaskManagerButton", 73 | "EnableSecondClock", 74 | "DisableHideOnFullScreen", 75 | "NewFullScreenMethod", 76 | "TransparentClockWhenInFullscreen", 77 | "MouseEventTransparentFS", 78 | "DisableHideWithTaskbar", 79 | "HideClockWhenClicked", 80 | "EnableLowCpuMode", 81 | "DisableNotifications", 82 | "DisableToolTip", 83 | "ForceClockOnFirstMonitor", 84 | "HideClockOnSecondaryMonitors", 85 | "CustomClockClickAction", 86 | "CustomClockDoubleClickAction", 87 | "CustomClockMiddleClickAction", 88 | "ClockClickToggleSetting", 89 | "DoubleClickToggleSetting", 90 | "MiddleClickToggleSetting", 91 | "ShowDesktopButton", 92 | "ClockOnTheLeft", 93 | "ForceOnBottom", 94 | "ForceOnTop", 95 | "PinClockToTheDesktop", 96 | "ClockFixedHeight", 97 | "ClockFixedWidth", 98 | "ClockXOffset", 99 | "ClockYOffset", 100 | "UseCustomFont", 101 | "UseCustomFontSize", 102 | "CustomLineHeight", 103 | "DisableAutomaticTextColor", 104 | "UseCustomFontColor", 105 | "DisableTaskbarBackgroundColor", 106 | "UseCustomBgColor", 107 | "UseCustomBgColor", 108 | "AccentBackgroundcolor", 109 | "DisableBlurryTexture", 110 | "CenterAlignment", 111 | "CustomClockStringsDisabled" 112 | "CustomClockStrings", 113 | "DisableTime", 114 | "EnableSeconds", 115 | "DisableDate", 116 | "EnableWeekNumber", 117 | "EnableWeekDay", 118 | "EnableInternetTime", 119 | "AtomicClockURL", 120 | "AtomicClockSyncInterval", 121 | "TooltipUseCustomFont", 122 | "TooltipUseCustomFontSize", 123 | "TooltipUseCustomFontColor", 124 | "TooltipDisableTaskbarBackgroundColor", 125 | "TooltipUseCustomBgColor", 126 | "PreventSleepFailure", 127 | "DisableLangAutoUpdater", 128 | "LogFullScreenAppTitle", 129 | "EnableWin32API", 130 | "EnableHideOnRDP", 131 | "legacyFullScreenMethod", 132 | "DisableSystemClockCover", 133 | ] -------------------------------------------------------------------------------- /elevenclock/lang/lang_bs.json: -------------------------------------------------------------------------------- 1 | { 2 | "{0} {0} {0} Contributors, please add your names/usernames separated by comas (for credit purposes)": null, 3 | "{0} {0} {0} temp": null, 4 | "10 hours": "10 sati", 5 | "10 minutes": "10 minuta", 6 | "1 hour": "1 sat", 7 | "24 hours": "24 sata", 8 | "2 hours": "2 sata", 9 | "30 minutes": "30 minuta", 10 | "4 hours": "4 sata", 11 | "About": null, 12 | "About ElevenClock version {0}:": "O ElevenClock verziji {0}", 13 | "About Qt": "Više o Qt", 14 | "About the language pack:": "Više o paketu jezika:", 15 | "Accent": "Naglasak", 16 | "Add the \"Show Desktop\" button on the left corner of every clock": "Dodaj dugme \"Prikaži na radnoj površini\" na lijevom kutu svakog sata", 17 | "Adjust horizontal clock position": "Prilagodi poziciju horizontalnog sata", 18 | "Adjust vertical clock position": "Prilagodi poziciju vertikalnog sata", 19 | "Align the clock text to the center": null, 20 | "Any text can be placed here. To place items such as date and time, please use the 1989 C standard. Check the format codes on the following link:": null, 21 | "Apply": null, 22 | "Are you sure do you want to blacklist the monitor \"{0}\"?": null, 23 | "Automatically check for updates": null, 24 | "Automatically install available updates": null, 25 | "{0} needs to be disabled to change this setting": null, 26 | "{0} needs to be enabled to change this setting": null, 27 | "Blacklisting a monitor will hide the clock on this monitor permanently.": null, 28 | "Blacklist Monitor": null, 29 | "Blacklist this monitor": null, 30 | "Black&White": null, 31 | "Update to the latest version!": null, 32 | "But here are other things you can do:": null, 33 | "Bypass update provider authenticity check (NOT RECOMMENDED, AT YOUR OWN RISK)": null, 34 | "Change": null, 35 | "Change date and time": null, 36 | "Change date and time format (Regional settings)": null, 37 | "Change startup behaviour": null, 38 | "Change task": null, 39 | "Change the action done when the clock is clicked": null, 40 | "Change the action done when the clock is double-clicked": null, 41 | "Change the action done when the clock is middle-clicked": null, 42 | "Change the height of the clock": null, 43 | "Change the width of the clock": null, 44 | "Choose the setting to toggle when clock is clicked": null, 45 | "Choose the setting to toggle when double-clicked": null, 46 | "Choose the setting to toggle when middle-clicked": null, 47 | "Click on Apply to apply and preview the format": null, 48 | "Clock {0} on {1}": null, 49 | "Clock {0} on monitor {1}": null, 50 | "Clock Appearance:": null, 51 | "Clock features:": null, 52 | "Clock position and size:": null, 53 | "Clock Settings:": null, 54 | "Clock's font, font size, font color and background, text alignment": null, 55 | "Clock size preferences, position offset, clock at the left, etc.": null, 56 | "Clock tools": null, 57 | "Clone style from another clock": null, 58 | "Close": null, 59 | "Close settings": null, 60 | "Copy date/time": null, 61 | "Copy log to clipboard": null, 62 | "Couldn't load the announcement image": null, 63 | "Couldn't load the announcements. Please try again later": null, 64 | "Custom format rules:": null, 65 | "Customize ElevenClock even more": null, 66 | "Customize the clock on Windows 11": null, 67 | "Date format, Time format, seconds,weekday, weeknumber, regional settings": null, 68 | "Date & Time Settings:": null, 69 | "Debbugging information:": null, 70 | "Default": null, 71 | "Developing is hard, and this aplication is free. But if you liked the application, you can always buy me a coffee :)": null, 72 | "Disable clock blurry texture": null, 73 | "Disable Copilot button": null, 74 | "Disabled": null, 75 | "Disable hiding the default windows clock": null, 76 | "Disable the notification badge": null, 77 | "Disable the tooltip shown when the clock is hovered": null, 78 | "Disable tooltip's blurry background": null, 79 | "Donate": null, 80 | "Do NOT update the language files dynamically": null, 81 | "Do you want to open the global settings instead?": null, 82 | "ElevenClock": null, 83 | "ElevenClock can hide when there's a fullscreen window present (when you are watching a video, you are playing, etc.), but it can also show over those windows (It might be useful if you use fullscreened terminals, etc.).

Please select one of the following and click next to continue": null, 84 | "ElevenClock has not been machine translated. The following users have been in charge of the translations:": null, 85 | "ElevenClock has updated to version {0} successfully\nPlease see GitHub for the changelog": null, 86 | "ElevenClock is an Open-Source application made with the help of other libraries made by the community:": null, 87 | "ElevenClock is downloading updates": null, 88 | "ElevenClock language locale:": null, 89 | "ElevenClock Settings": null, 90 | "ElevenClock's language": null, 91 | "ElevenClock's log": null, 92 | "ElevenClock Updater": null, 93 | "ElevenClock v{0}": null, 94 | "ElevenClock version:": null, 95 | "ElevenClock wouldn't have been possible with the help of our dear contributors:": null, 96 | "Empty the recycle bin": null, 97 | "Empty the recycle bin (Without confirmation)": null, 98 | "Enable Copilot button": null, 99 | "Enable internet time sync": null, 100 | "Enable low-cpu mode": null, 101 | "Enable really silent updates": null, 102 | "Enable the new notification indicator (Windows 11 build 22631 or higher)": null, 103 | "Export": null, 104 | "Export log as a file": null, 105 | "Export settings to a local file": null, 106 | "Fetching latest announcement, please wait...": null, 107 | "Finish": null, 108 | "Fixes and other experimental features: (Use ONLY if something is not working)": null, 109 | "(for advanced users only)": null, 110 | "Force the clock to be at the bottom of the screen": null, 111 | "Force the clock to be at the top of the screen": null, 112 | "Force the clock to be transparent if any window shows in fullscreen": null, 113 | "Ft. Seconds": null, 114 | "Fullscreen behaviour": null, 115 | "Fullscreen behaviour, low cpu mode, other miscellaneous preferences": null, 116 | "General Settings:": null, 117 | "Get started": null, 118 | "Help": null, 119 | "Hide ElevenClock": null, 120 | "Hide extended options from the clock right-click menu (needs a restart to be applied)": null, 121 | "Hide the clock, as the default windows clock would do.": null, 122 | "Hide the clock during 10 seconds when clicked": null, 123 | "Hide the clock during 5 seconds when hoveredwith the mouse": null, 124 | "Hide the clock in fullscreen mode": null, 125 | "Hide the clock (Recommended)": null, 126 | "Hide this clock": null, 127 | "If you already know how does this work, or you want to skip the welcome wizard, please click on the bottom-left Skip button.": null, 128 | "If you don't know which one is the best, choose {0}": null, 129 | "If you don't understand what is happening, please uncheck the checkbox over the text area": null, 130 | "Ignore mouse clicks when on fullscreen": null, 131 | "Import": null, 132 | "Import settings from a local file": null, 133 | "Increase the length of the double-click period": null, 134 | "Info, report a bug, submit a feature request, donate, about": null, 135 | "Install update": null, 136 | "Internet date and time": null, 137 | "Internet sync frequency": null, 138 | "Internet time": null, 139 | "Invalid time format\nPlease follow the\nC 1989 Standards": null, 140 | "Invalid time format\nPlease modify it\nin the settings": null, 141 | "Language pack author(s), help translating ElevenClock": null, 142 | "Let's talk: Format": null, 143 | "Local time": null, 144 | "Log, debugging information": null, 145 | "Modifying Clock {0} on the monitor {1}": null, 146 | "More Info": null, 147 | "Move this clock to the bottom": null, 148 | "Move this clock to the left": null, 149 | "Move this clock to the right": null, 150 | "Move this clock to the top": null, 151 | "Next": null, 152 | "No": null, 153 | "No action": null, 154 | "No results were found": null, 155 | "Nothing to preview": null, 156 | "Notification badge, clicked action, show desktop button, etc.": null, 157 | "Notification settings": null, 158 | "Now you should see the clock everywhere": null, 159 | "Ok": null, 160 | "One last thing: Appearance": null, 161 | "Only Date": null, 162 | "Only Time": null, 163 | "Open": null, 164 | "Open ElevenClock's log": null, 165 | "Open GitHub": null, 166 | "Open global settings": null, 167 | "Open online help to troubleshoot problems": null, 168 | "Open page": null, 169 | "Open quick settings": null, 170 | "Open run dialog": null, 171 | "Open search menu": null, 172 | "Open start menu": null, 173 | "Open task manager": null, 174 | "Open the settings window and customize ElevenClock even further.": null, 175 | "Open the welcome wizard": null, 176 | "Paste a URL from the world clock api or equivalent": null, 177 | "Pick a color": null, 178 | "Pin the clock to the desktop": null, 179 | "Please make sure to install ElevenClock from official sources only. Also, using ElevenClock implies the acceptation of the GPLv3 license": null, 180 | "Please select one of the following and click next.": null, 181 | "Please select the clock style you like the most. You will be able to change this after in the settings window": null, 182 | "Please select the date and time format you like the most. You will be able to change this after in the settings window": null, 183 | "Precise internet time. Ideal if you are not using any kind of VPN or proxy": null, 184 | "Python date and time formats": null, 185 | "Quit ElevenClock": null, 186 | "Regional settings": null, 187 | "Reload Clocks": null, 188 | "Reload clocks automatically every 5 minutes": null, 189 | "Reload clocks right after exiting from sleep": null, 190 | "Reload log": null, 191 | "Remember that this wizard can be run at any time from the Settings Window": null, 192 | "Report": null, 193 | "Report an issue/request a feature": null, 194 | "Reset": null, 195 | "Reset ElevenClock preferences to defaults": null, 196 | "Reset monitor blacklisting status": null, 197 | "Restart ElevenClock": null, 198 | "Restore horizontal position": null, 199 | "Restore vertical position": null, 200 | "Return to top": null, 201 | "Search on the settings": null, 202 | "Select custom color": null, 203 | "Select custom font": null, 204 | "Select font": null, 205 | "Select internet time provider, change sync frequency": null, 206 | "Set a custom date and time format": null, 207 | "Set a custom network time provider": null, 208 | "Set clock {0} on monitor {1} to have a different style that the other clocks.": null, 209 | "Settings for clock {0} on the monitor {1} - ElevenClock Settings": null, 210 | "Settings for this clock": null, 211 | "Show a second clock on the other end of the taskbar": null, 212 | "Show calendar": null, 213 | "Show date on the clock": null, 214 | "Show desktop": null, 215 | "Show ElevenClock on system tray": null, 216 | "Show missing translation strings": null, 217 | "Show seconds on the clock": null, 218 | "Show the clock at the left of the screen": null, 219 | "Show the clock over fullscreen windows. This might cover some in-app controls, like youtube's exit fullscreen button, but it might be useful to see the time when playing": null, 220 | "Show the clock over the fullscreen window": null, 221 | "Show the clock when the taskbar is set to hide automatically": null, 222 | "Show the local computer time. The time will not be synced with the internet and might be inaccurate": null, 223 | "Show time on the clock": null, 224 | "Show weekday on the clock": null, 225 | "Show week number on the clock": null, 226 | "Skip": null, 227 | "Start": null, 228 | "Success": null, 229 | "Suport the developer": null, 230 | "Support the dev: Give me a coffee☕": null, 231 | "Sync time with the internet": null, 232 | "System architecture:": null, 233 | "System locale:": null, 234 | "System version:": null, 235 | "Task Manager": null, 236 | "Testing features and error-fixing tools": null, 237 | "The monitors were unblacklisted successfully.": null, 238 | "Third party licenses": null, 239 | "Third Party Open-Source Software in Elevenclock {0} (And their licenses)": null, 240 | "This action can be reverted from the settings window, under Clock position and size": null, 241 | "This wizard will help you configure and customize ElevenClock. Click Start to get started!": null, 242 | "To disable the zero-padding effect, add a # in between the % and the code: non-zero-padded hours would be %#H, and zero-padded hours would be %H": null, 243 | "Toggle ElevenClock setting": null, 244 | "Tooltip Appearance:": null, 245 | "Tooltip's font, font size, font color and background": null, 246 | "Total RAM:": null, 247 | "Translate ElevenClock to your language": null, 248 | "Updates, icon tray, language": null, 249 | "Use a custom background color": null, 250 | "Use a custom font": null, 251 | "Use a custom font color": null, 252 | "Use a custom font size": null, 253 | "Use a custom line height": null, 254 | "Use the notation {%H+1} to specify offsets. Replace %H with the desired value and +1 for a positive or negative number (+n or -n, respectively, for a n offset), representing the offset.": null, 255 | "Use the notation (%H {sec+1}) on the end of string to specify offset in seconds. For example, to add an hour and view in format HH:MM use (%H:%M {sec+3600}), and to decrease an hour use (%H:%M {sec-3600}).": null, 256 | "View": null, 257 | "View ElevenClock on GitHub": null, 258 | "View ElevenClock's homepage": null, 259 | "View ElevenClock's source code. From there, you can report bugs or suggest features, or even contribute direcly to The ElevenClock Project": null, 260 | "W": null, 261 | "Wait a second!": null, 262 | "Weekday": null, 263 | "Week Number": null, 264 | "Welcome to Elevenclock!": null, 265 | "Welcome to ElevenClock": null, 266 | "What time do you want to see?": null, 267 | "White&Black": null, 268 | "Yes": null, 269 | "You are now ready to go!": null, 270 | "You can use HTML tags to set bold, italics or change the color of a piece of text through the <span style=\"color: red\"></span> tag": null, 271 | "You might lose functionalities, like the notification counter or the dynamic background": null, 272 | "You need to enable the checkbox above\nin order to change those settings": null 273 | } -------------------------------------------------------------------------------- /elevenclock/lang/lang_el.json: -------------------------------------------------------------------------------- 1 | { 2 | "{0} {0} {0} Contributors, please add your names/usernames separated by comas (for credit purposes)": "@panos78", 3 | "{0} {0} {0} temp": "Μετάφραση ελληνικών από panos78", 4 | "10 hours": "10 ώρες", 5 | "10 minutes": "10 λεπτά", 6 | "1 hour": "1 ώρα", 7 | "24 hours": "24 ώρες", 8 | "2 hours": null, 9 | "30 minutes": null, 10 | "4 hours": null, 11 | "About": null, 12 | "About ElevenClock version {0}:": "Σχετικά με την έκδοση {0} του ElevenClock:", 13 | "About Qt": null, 14 | "About the language pack:": "Σχετικά με το πακέτο γλώσσας", 15 | "Accent": null, 16 | "Add the \"Show Desktop\" button on the left corner of every clock": null, 17 | "Adjust horizontal clock position": null, 18 | "Adjust vertical clock position": null, 19 | "Align the clock text to the center": null, 20 | "Any text can be placed here. To place items such as date and time, please use the 1989 C standard. Check the format codes on the following link:": null, 21 | "Apply": null, 22 | "Are you sure do you want to blacklist the monitor \"{0}\"?": null, 23 | "Automatically check for updates": "Αυτόματος έλεγχος για ενημερώσεις", 24 | "Automatically install available updates": "Αυτόματη εγκατάσταση διαθέισμων ενημερώσεων", 25 | "{0} needs to be disabled to change this setting": null, 26 | "{0} needs to be enabled to change this setting": null, 27 | "Blacklisting a monitor will hide the clock on this monitor permanently.": null, 28 | "Blacklist Monitor": null, 29 | "Blacklist this monitor": null, 30 | "Black&White": null, 31 | "Update to the latest version!": "Ενημέρωση στην τελευταία έκδοση!", 32 | "But here are other things you can do:": null, 33 | "Bypass update provider authenticity check (NOT RECOMMENDED, AT YOUR OWN RISK)": "Παράκαμψη ελέγχου πιστοποίησης παρόχου ενημερώσεων (ΔΕΝ ΠΡΟΤΕΊΝΕΤΑΙ, ΜΕ ΔΙΚΗ ΣΑΣ ΕΥΘΥΝΗ)", 34 | "Change": "Αλλαγή", 35 | "Change date and time": null, 36 | "Change date and time format (Regional settings)": "Αλλαγή μορφής ημερομηνίας και ώρας (Τοπικές ρυθμίσεις)", 37 | "Change startup behaviour": "Αλλαγή συμπεριφοράς κατά την εκκίνηση", 38 | "Change task": null, 39 | "Change the action done when the clock is clicked": null, 40 | "Change the action done when the clock is double-clicked": null, 41 | "Change the action done when the clock is middle-clicked": null, 42 | "Change the height of the clock": null, 43 | "Change the width of the clock": null, 44 | "Choose the setting to toggle when clock is clicked": null, 45 | "Choose the setting to toggle when double-clicked": null, 46 | "Choose the setting to toggle when middle-clicked": null, 47 | "Click on Apply to apply and preview the format": null, 48 | "Clock {0} on {1}": null, 49 | "Clock {0} on monitor {1}": null, 50 | "Clock Appearance:": null, 51 | "Clock features:": null, 52 | "Clock position and size:": null, 53 | "Clock Settings:": "Ρυθμίσεις Ρολογιού", 54 | "Clock's font, font size, font color and background, text alignment": null, 55 | "Clock size preferences, position offset, clock at the left, etc.": null, 56 | "Clock tools": null, 57 | "Clone style from another clock": null, 58 | "Close": "Κλείσιμο", 59 | "Close settings": "Κλείσιμο ρυθμίσεων", 60 | "Copy date/time": null, 61 | "Copy log to clipboard": null, 62 | "Couldn't load the announcement image": null, 63 | "Couldn't load the announcements. Please try again later": null, 64 | "Custom format rules:": null, 65 | "Customize ElevenClock even more": null, 66 | "Customize the clock on Windows 11": null, 67 | "Date format, Time format, seconds,weekday, weeknumber, regional settings": null, 68 | "Date & Time Settings:": "Ρυθμίσεις Ημερομηνίας & Ώρας", 69 | "Debbugging information:": null, 70 | "Default": null, 71 | "Developing is hard, and this aplication is free. But if you liked the application, you can always buy me a coffee :)": null, 72 | "Disable clock blurry texture": null, 73 | "Disable Copilot button": null, 74 | "Disabled": null, 75 | "Disable hiding the default windows clock": null, 76 | "Disable the notification badge": null, 77 | "Disable the tooltip shown when the clock is hovered": null, 78 | "Disable tooltip's blurry background": null, 79 | "Donate": null, 80 | "Do NOT update the language files dynamically": null, 81 | "Do you want to open the global settings instead?": null, 82 | "ElevenClock": null, 83 | "ElevenClock can hide when there's a fullscreen window present (when you are watching a video, you are playing, etc.), but it can also show over those windows (It might be useful if you use fullscreened terminals, etc.).

Please select one of the following and click next to continue": null, 84 | "ElevenClock has not been machine translated. The following users have been in charge of the translations:": null, 85 | "ElevenClock has updated to version {0} successfully\nPlease see GitHub for the changelog": null, 86 | "ElevenClock is an Open-Source application made with the help of other libraries made by the community:": null, 87 | "ElevenClock is downloading updates": null, 88 | "ElevenClock language locale:": null, 89 | "ElevenClock Settings": "Ρυθμίσεις ElevenClock", 90 | "ElevenClock's language": null, 91 | "ElevenClock's log": null, 92 | "ElevenClock Updater": null, 93 | "ElevenClock v{0}": "Έκδοση ElevenClock: {0}", 94 | "ElevenClock version:": null, 95 | "ElevenClock wouldn't have been possible with the help of our dear contributors:": null, 96 | "Empty the recycle bin": null, 97 | "Empty the recycle bin (Without confirmation)": null, 98 | "Enable Copilot button": null, 99 | "Enable internet time sync": null, 100 | "Enable low-cpu mode": null, 101 | "Enable really silent updates": "Ενεργοποίηση πραγματικά σιωπηλών ενημερώσεων", 102 | "Enable the new notification indicator (Windows 11 build 22631 or higher)": null, 103 | "Export": null, 104 | "Export log as a file": null, 105 | "Export settings to a local file": null, 106 | "Fetching latest announcement, please wait...": null, 107 | "Finish": null, 108 | "Fixes and other experimental features: (Use ONLY if something is not working)": null, 109 | "(for advanced users only)": null, 110 | "Force the clock to be at the bottom of the screen": "Εξαναγκασμός ρολογιού στο κάτω μέρος της οθόνης", 111 | "Force the clock to be at the top of the screen": null, 112 | "Force the clock to be transparent if any window shows in fullscreen": null, 113 | "Ft. Seconds": null, 114 | "Fullscreen behaviour": null, 115 | "Fullscreen behaviour, low cpu mode, other miscellaneous preferences": null, 116 | "General Settings:": "Γενικές Ρυθμίσεις", 117 | "Get started": "Ξεκινήστε", 118 | "Help": null, 119 | "Hide ElevenClock": "Απόκρυψη ElevenClock", 120 | "Hide extended options from the clock right-click menu (needs a restart to be applied)": null, 121 | "Hide the clock, as the default windows clock would do.": null, 122 | "Hide the clock during 10 seconds when clicked": null, 123 | "Hide the clock during 5 seconds when hoveredwith the mouse": null, 124 | "Hide the clock in fullscreen mode": "Απόκρυψη ρολογιού σε κατάσταση πλήρους οθόνης", 125 | "Hide the clock (Recommended)": null, 126 | "Hide this clock": null, 127 | "If you already know how does this work, or you want to skip the welcome wizard, please click on the bottom-left Skip button.": null, 128 | "If you don't know which one is the best, choose {0}": null, 129 | "If you don't understand what is happening, please uncheck the checkbox over the text area": null, 130 | "Ignore mouse clicks when on fullscreen": null, 131 | "Import": null, 132 | "Import settings from a local file": null, 133 | "Increase the length of the double-click period": null, 134 | "Info, report a bug, submit a feature request, donate, about": null, 135 | "Install update": "Εγκατάστσαη ενημέρωσης", 136 | "Internet date and time": null, 137 | "Internet sync frequency": null, 138 | "Internet time": null, 139 | "Invalid time format\nPlease follow the\nC 1989 Standards": null, 140 | "Invalid time format\nPlease modify it\nin the settings": null, 141 | "Language pack author(s), help translating ElevenClock": null, 142 | "Let's talk: Format": null, 143 | "Local time": null, 144 | "Log, debugging information": null, 145 | "Modifying Clock {0} on the monitor {1}": null, 146 | "More Info": null, 147 | "Move this clock to the bottom": null, 148 | "Move this clock to the left": null, 149 | "Move this clock to the right": null, 150 | "Move this clock to the top": null, 151 | "Next": null, 152 | "No": null, 153 | "No action": null, 154 | "No results were found": null, 155 | "Nothing to preview": null, 156 | "Notification badge, clicked action, show desktop button, etc.": null, 157 | "Notification settings": null, 158 | "Now you should see the clock everywhere": null, 159 | "Ok": null, 160 | "One last thing: Appearance": null, 161 | "Only Date": null, 162 | "Only Time": null, 163 | "Open": "Άνοιγμα", 164 | "Open ElevenClock's log": null, 165 | "Open GitHub": null, 166 | "Open global settings": null, 167 | "Open online help to troubleshoot problems": null, 168 | "Open page": "Άνοιγμα σελίδας", 169 | "Open quick settings": null, 170 | "Open run dialog": null, 171 | "Open search menu": null, 172 | "Open start menu": null, 173 | "Open task manager": null, 174 | "Open the settings window and customize ElevenClock even further.": null, 175 | "Open the welcome wizard": null, 176 | "Paste a URL from the world clock api or equivalent": null, 177 | "Pick a color": null, 178 | "Pin the clock to the desktop": null, 179 | "Please make sure to install ElevenClock from official sources only. Also, using ElevenClock implies the acceptation of the GPLv3 license": null, 180 | "Please select one of the following and click next.": null, 181 | "Please select the clock style you like the most. You will be able to change this after in the settings window": null, 182 | "Please select the date and time format you like the most. You will be able to change this after in the settings window": null, 183 | "Precise internet time. Ideal if you are not using any kind of VPN or proxy": null, 184 | "Python date and time formats": null, 185 | "Quit ElevenClock": "Τερματισμός ElevenClock", 186 | "Regional settings": "Τοπικές ρυθμίσεις", 187 | "Reload Clocks": "Επαναφόρτωση Ρολογιών", 188 | "Reload clocks automatically every 5 minutes": null, 189 | "Reload clocks right after exiting from sleep": null, 190 | "Reload log": null, 191 | "Remember that this wizard can be run at any time from the Settings Window": null, 192 | "Report": "Αναφορά", 193 | "Report an issue/request a feature": "Αναφορά θέματος / Αίτημα χαρακτηριστικού", 194 | "Reset": null, 195 | "Reset ElevenClock preferences to defaults": null, 196 | "Reset monitor blacklisting status": null, 197 | "Restart ElevenClock": "Επανεκκίνηση ElevenClock", 198 | "Restore horizontal position": null, 199 | "Restore vertical position": null, 200 | "Return to top": null, 201 | "Search on the settings": null, 202 | "Select custom color": null, 203 | "Select custom font": null, 204 | "Select font": null, 205 | "Select internet time provider, change sync frequency": null, 206 | "Set a custom date and time format": null, 207 | "Set a custom network time provider": null, 208 | "Set clock {0} on monitor {1} to have a different style that the other clocks.": null, 209 | "Settings for clock {0} on the monitor {1} - ElevenClock Settings": null, 210 | "Settings for this clock": null, 211 | "Show a second clock on the other end of the taskbar": null, 212 | "Show calendar": null, 213 | "Show date on the clock": "Προβολή ημερομηνίας στο ρολόι", 214 | "Show desktop": null, 215 | "Show ElevenClock on system tray": "Προβολή του ElevenClock στη γραμμή εργασιών", 216 | "Show missing translation strings": null, 217 | "Show seconds on the clock": "Προβολή δευτερολέπτων στο ρολόι", 218 | "Show the clock at the left of the screen": "Προβολή ρολογιού στα αριστερά της οθόνης", 219 | "Show the clock over fullscreen windows. This might cover some in-app controls, like youtube's exit fullscreen button, but it might be useful to see the time when playing": null, 220 | "Show the clock over the fullscreen window": null, 221 | "Show the clock when the taskbar is set to hide automatically": "Προβολή ρολογιού όταν η γραμμή εργασιών είναι ορισμένη για αυτόματη απόκρυψη", 222 | "Show the local computer time. The time will not be synced with the internet and might be inaccurate": null, 223 | "Show time on the clock": "Προβολή ώρας στο ρολόι", 224 | "Show weekday on the clock": "Προβολή ημέρας της εβδομάδας στο ρολόι", 225 | "Show week number on the clock": null, 226 | "Skip": null, 227 | "Start": null, 228 | "Success": null, 229 | "Suport the developer": null, 230 | "Support the dev: Give me a coffee☕": "Υποστηρίξτε τον δημιουργό: Κεράστε τον ένα καφέ☕", 231 | "Sync time with the internet": null, 232 | "System architecture:": null, 233 | "System locale:": null, 234 | "System version:": null, 235 | "Task Manager": null, 236 | "Testing features and error-fixing tools": null, 237 | "The monitors were unblacklisted successfully.": null, 238 | "Third party licenses": null, 239 | "Third Party Open-Source Software in Elevenclock {0} (And their licenses)": null, 240 | "This action can be reverted from the settings window, under Clock position and size": null, 241 | "This wizard will help you configure and customize ElevenClock. Click Start to get started!": null, 242 | "To disable the zero-padding effect, add a # in between the % and the code: non-zero-padded hours would be %#H, and zero-padded hours would be %H": null, 243 | "Toggle ElevenClock setting": null, 244 | "Tooltip Appearance:": null, 245 | "Tooltip's font, font size, font color and background": null, 246 | "Total RAM:": null, 247 | "Translate ElevenClock to your language": "Μεταφραση του ElevenClock στη γλώσσα σας", 248 | "Updates, icon tray, language": null, 249 | "Use a custom background color": null, 250 | "Use a custom font": null, 251 | "Use a custom font color": null, 252 | "Use a custom font size": null, 253 | "Use a custom line height": null, 254 | "Use the notation {%H+1} to specify offsets. Replace %H with the desired value and +1 for a positive or negative number (+n or -n, respectively, for a n offset), representing the offset.": null, 255 | "Use the notation (%H {sec+1}) on the end of string to specify offset in seconds. For example, to add an hour and view in format HH:MM use (%H:%M {sec+3600}), and to decrease an hour use (%H:%M {sec-3600}).": null, 256 | "View": null, 257 | "View ElevenClock on GitHub": null, 258 | "View ElevenClock's homepage": "Μετάβαση στην ιστοσελίδα του ElevenClock", 259 | "View ElevenClock's source code. From there, you can report bugs or suggest features, or even contribute direcly to The ElevenClock Project": null, 260 | "W": null, 261 | "Wait a second!": null, 262 | "Weekday": null, 263 | "Week Number": null, 264 | "Welcome to Elevenclock!": null, 265 | "Welcome to ElevenClock": null, 266 | "What time do you want to see?": null, 267 | "White&Black": null, 268 | "Yes": null, 269 | "You are now ready to go!": null, 270 | "You can use HTML tags to set bold, italics or change the color of a piece of text through the <span style=\"color: red\"></span> tag": null, 271 | "You might lose functionalities, like the notification counter or the dynamic background": null, 272 | "You need to enable the checkbox above\nin order to change those settings": null 273 | } -------------------------------------------------------------------------------- /elevenclock/lang/lang_en.json: -------------------------------------------------------------------------------- 1 | { 2 | "{0} {0} {0} Contributors, please add your names/usernames separated by comas (for credit purposes)": "@marticliment", 3 | "{0} {0} {0} temp": "Translated to English by @marticliment", 4 | "10 hours": "10 hours", 5 | "10 minutes": null, 6 | "1 hour": null, 7 | "24 hours": null, 8 | "2 hours": null, 9 | "30 minutes": null, 10 | "4 hours": null, 11 | "About": null, 12 | "About ElevenClock version {0}:": null, 13 | "About Qt": null, 14 | "About the language pack:": null, 15 | "Accent": null, 16 | "Add the \"Show Desktop\" button on the left corner of every clock": "Add the \"Show Desktop\" button on the right side of each clock", 17 | "Adjust horizontal clock position": null, 18 | "Adjust vertical clock position": null, 19 | "Align the clock text to the center": null, 20 | "Any text can be placed here. To place items such as date and time, please use the 1989 C standard. Check the format codes on the following link:": null, 21 | "Apply": null, 22 | "Are you sure do you want to blacklist the monitor \"{0}\"?": null, 23 | "Automatically check for updates": null, 24 | "Automatically install available updates": null, 25 | "{0} needs to be disabled to change this setting": null, 26 | "{0} needs to be enabled to change this setting": null, 27 | "Blacklisting a monitor will hide the clock on this monitor permanently.": null, 28 | "Blacklist Monitor": null, 29 | "Blacklist this monitor": null, 30 | "Black&White": null, 31 | "Update to the latest version!": null, 32 | "But here are other things you can do:": null, 33 | "Bypass update provider authenticity check (NOT RECOMMENDED, AT YOUR OWN RISK)": null, 34 | "Change": null, 35 | "Change date and time": null, 36 | "Change date and time format (Regional settings)": null, 37 | "Change startup behaviour": null, 38 | "Change task": null, 39 | "Change the action done when the clock is clicked": null, 40 | "Change the action done when the clock is double-clicked": null, 41 | "Change the action done when the clock is middle-clicked": null, 42 | "Change the height of the clock": null, 43 | "Change the width of the clock": null, 44 | "Choose the setting to toggle when clock is clicked": null, 45 | "Choose the setting to toggle when double-clicked": null, 46 | "Choose the setting to toggle when middle-clicked": null, 47 | "Click on Apply to apply and preview the format": null, 48 | "Clock {0} on {1}": null, 49 | "Clock {0} on monitor {1}": null, 50 | "Clock Appearance:": null, 51 | "Clock features:": null, 52 | "Clock position and size:": null, 53 | "Clock Settings:": null, 54 | "Clock's font, font size, font color and background, text alignment": null, 55 | "Clock size preferences, position offset, clock at the left, etc.": null, 56 | "Clock tools": null, 57 | "Clone style from another clock": null, 58 | "Close": null, 59 | "Close settings": null, 60 | "Copy date/time": null, 61 | "Copy log to clipboard": null, 62 | "Couldn't load the announcement image": null, 63 | "Couldn't load the announcements. Please try again later": null, 64 | "Custom format rules:": null, 65 | "Customize ElevenClock even more": null, 66 | "Customize the clock on Windows 11": null, 67 | "Date format, Time format, seconds,weekday, weeknumber, regional settings": "Date format, Time format, seconds, weekday, weeknumber, regional settings", 68 | "Date & Time Settings:": null, 69 | "Debbugging information:": null, 70 | "Default": null, 71 | "Developing is hard, and this aplication is free. But if you liked the application, you can always buy me a coffee :)": "Developing is hard, and this program is free. But if you liked the application, you can always buy me a coffee :)", 72 | "Disable clock blurry texture": null, 73 | "Disable Copilot button": null, 74 | "Disabled": null, 75 | "Disable hiding the default windows clock": null, 76 | "Disable the notification badge": null, 77 | "Disable the tooltip shown when the clock is hovered": null, 78 | "Disable tooltip's blurry background": null, 79 | "Donate": null, 80 | "Do NOT update the language files dynamically": null, 81 | "Do you want to open the global settings instead?": null, 82 | "ElevenClock": null, 83 | "ElevenClock can hide when there's a fullscreen window present (when you are watching a video, you are playing, etc.), but it can also show over those windows (It might be useful if you use fullscreened terminals, etc.).

Please select one of the following and click next to continue": null, 84 | "ElevenClock has not been machine translated. The following users have been in charge of the translations:": null, 85 | "ElevenClock has updated to version {0} successfully\nPlease see GitHub for the changelog": null, 86 | "ElevenClock is an Open-Source application made with the help of other libraries made by the community:": null, 87 | "ElevenClock is downloading updates": null, 88 | "ElevenClock language locale:": null, 89 | "ElevenClock Settings": null, 90 | "ElevenClock's language": null, 91 | "ElevenClock's log": null, 92 | "ElevenClock Updater": null, 93 | "ElevenClock v{0}": null, 94 | "ElevenClock version:": null, 95 | "ElevenClock wouldn't have been possible with the help of our dear contributors:": null, 96 | "Empty the recycle bin": null, 97 | "Empty the recycle bin (Without confirmation)": "Empty the recycle bin (No confirmation)", 98 | "Enable Copilot button": null, 99 | "Enable internet time sync": null, 100 | "Enable low-cpu mode": null, 101 | "Enable really silent updates": null, 102 | "Enable the new notification indicator (Windows 11 build 22631 or higher)": null, 103 | "Export": null, 104 | "Export log as a file": null, 105 | "Export settings to a local file": null, 106 | "Fetching latest announcement, please wait...": null, 107 | "Finish": null, 108 | "Fixes and other experimental features: (Use ONLY if something is not working)": null, 109 | "(for advanced users only)": null, 110 | "Force the clock to be at the bottom of the screen": null, 111 | "Force the clock to be at the top of the screen": null, 112 | "Force the clock to be transparent if any window shows in fullscreen": null, 113 | "Ft. Seconds": null, 114 | "Fullscreen behaviour": null, 115 | "Fullscreen behaviour, low cpu mode, other miscellaneous preferences": null, 116 | "General Settings:": null, 117 | "Get started": null, 118 | "Help": null, 119 | "Hide ElevenClock": null, 120 | "Hide extended options from the clock right-click menu (needs a restart to be applied)": "Hide extended options from the clock right-click menu (needs a restart to be applied)", 121 | "Hide the clock, as the default windows clock would do.": null, 122 | "Hide the clock during 10 seconds when clicked": null, 123 | "Hide the clock during 5 seconds when hoveredwith the mouse": "Hide the clock during 5 seconds when hovered with the mouse", 124 | "Hide the clock in fullscreen mode": null, 125 | "Hide the clock (Recommended)": null, 126 | "Hide this clock": null, 127 | "If you already know how does this work, or you want to skip the welcome wizard, please click on the bottom-left Skip button.": null, 128 | "If you don't know which one is the best, choose {0}": null, 129 | "If you don't understand what is happening, please uncheck the checkbox over the text area": null, 130 | "Ignore mouse clicks when on fullscreen": null, 131 | "Import": null, 132 | "Import settings from a local file": null, 133 | "Increase the length of the double-click period": null, 134 | "Info, report a bug, submit a feature request, donate, about": null, 135 | "Install update": null, 136 | "Internet date and time": null, 137 | "Internet sync frequency": null, 138 | "Internet time": null, 139 | "Invalid time format\nPlease follow the\nC 1989 Standards": null, 140 | "Invalid time format\nPlease modify it\nin the settings": null, 141 | "Language pack author(s), help translating ElevenClock": null, 142 | "Let's talk: Format": null, 143 | "Local time": null, 144 | "Log, debugging information": null, 145 | "Modifying Clock {0} on the monitor {1}": null, 146 | "More Info": null, 147 | "Move this clock to the bottom": null, 148 | "Move this clock to the left": null, 149 | "Move this clock to the right": null, 150 | "Move this clock to the top": null, 151 | "Next": null, 152 | "No": null, 153 | "No action": null, 154 | "No results were found": null, 155 | "Nothing to preview": null, 156 | "Notification badge, clicked action, show desktop button, etc.": null, 157 | "Notification settings": null, 158 | "Now you should see the clock everywhere": null, 159 | "Ok": null, 160 | "One last thing: Appearance": null, 161 | "Only Date": null, 162 | "Only Time": null, 163 | "Open": null, 164 | "Open ElevenClock's log": null, 165 | "Open GitHub": null, 166 | "Open global settings": null, 167 | "Open online help to troubleshoot problems": null, 168 | "Open page": null, 169 | "Open quick settings": null, 170 | "Open run dialog": null, 171 | "Open search menu": null, 172 | "Open start menu": null, 173 | "Open task manager": null, 174 | "Open the settings window and customize ElevenClock even further.": null, 175 | "Open the welcome wizard": null, 176 | "Paste a URL from the world clock api or equivalent": null, 177 | "Pick a color": null, 178 | "Pin the clock to the desktop": null, 179 | "Please make sure to install ElevenClock from official sources only. Also, using ElevenClock implies the acceptation of the GPLv3 license": null, 180 | "Please select one of the following and click next.": null, 181 | "Please select the clock style you like the most. You will be able to change this after in the settings window": null, 182 | "Please select the date and time format you like the most. You will be able to change this after in the settings window": null, 183 | "Precise internet time. Ideal if you are not using any kind of VPN or proxy": null, 184 | "Python date and time formats": "Python date and time formats", 185 | "Quit ElevenClock": null, 186 | "Regional settings": null, 187 | "Reload Clocks": null, 188 | "Reload clocks automatically every 5 minutes": null, 189 | "Reload clocks right after exiting from sleep": null, 190 | "Reload log": null, 191 | "Remember that this wizard can be run at any time from the Settings Window": null, 192 | "Report": null, 193 | "Report an issue/request a feature": null, 194 | "Reset": null, 195 | "Reset ElevenClock preferences to defaults": null, 196 | "Reset monitor blacklisting status": null, 197 | "Restart ElevenClock": null, 198 | "Restore horizontal position": null, 199 | "Restore vertical position": null, 200 | "Return to top": null, 201 | "Search on the settings": null, 202 | "Select custom color": null, 203 | "Select custom font": null, 204 | "Select font": null, 205 | "Select internet time provider, change sync frequency": null, 206 | "Set a custom date and time format": null, 207 | "Set a custom network time provider": null, 208 | "Set clock {0} on monitor {1} to have a different style that the other clocks.": null, 209 | "Settings for clock {0} on the monitor {1} - ElevenClock Settings": null, 210 | "Settings for this clock": null, 211 | "Show a second clock on the other end of the taskbar": null, 212 | "Show calendar": null, 213 | "Show date on the clock": null, 214 | "Show desktop": null, 215 | "Show ElevenClock on system tray": "Show ElevenClock icon on system tray", 216 | "Show missing translation strings": null, 217 | "Show seconds on the clock": null, 218 | "Show the clock at the left of the screen": null, 219 | "Show the clock over fullscreen windows. This might cover some in-app controls, like youtube's exit fullscreen button, but it might be useful to see the time when playing": null, 220 | "Show the clock over the fullscreen window": null, 221 | "Show the clock when the taskbar is set to hide automatically": null, 222 | "Show the local computer time. The time will not be synced with the internet and might be inaccurate": null, 223 | "Show time on the clock": null, 224 | "Show weekday on the clock": null, 225 | "Show week number on the clock": null, 226 | "Skip": null, 227 | "Start": null, 228 | "Success": null, 229 | "Suport the developer": "Support the developer", 230 | "Support the dev: Give me a coffee☕": null, 231 | "Sync time with the internet": null, 232 | "System architecture:": null, 233 | "System locale:": null, 234 | "System version:": null, 235 | "Task Manager": null, 236 | "Testing features and error-fixing tools": null, 237 | "The monitors were unblacklisted successfully.": null, 238 | "Third party licenses": null, 239 | "Third Party Open-Source Software in Elevenclock {0} (And their licenses)": "Third Party Open-Source Software in ElevenClock {0} (And their licenses)", 240 | "This action can be reverted from the settings window, under Clock position and size": "This action can be reverted from the settings window, under Clock position and size", 241 | "This wizard will help you configure and customize ElevenClock. Click Start to get started!": null, 242 | "To disable the zero-padding effect, add a # in between the % and the code: non-zero-padded hours would be %#H, and zero-padded hours would be %H": "To disable the zero-padding effect, add a # in between the % and the code: non-zero-padded hours would be %#H, and zero-padded hours would be %H", 243 | "Toggle ElevenClock setting": null, 244 | "Tooltip Appearance:": null, 245 | "Tooltip's font, font size, font color and background": null, 246 | "Total RAM:": null, 247 | "Translate ElevenClock to your language": null, 248 | "Updates, icon tray, language": null, 249 | "Use a custom background color": null, 250 | "Use a custom font": null, 251 | "Use a custom font color": null, 252 | "Use a custom font size": null, 253 | "Use a custom line height": null, 254 | "Use the notation {%H+1} to specify offsets. Replace %H with the desired value and +1 for a positive or negative number (+n or -n, respectively, for a n offset), representing the offset.": null, 255 | "Use the notation (%H {sec+1}) on the end of string to specify offset in seconds. For example, to add an hour and view in format HH:MM use (%H:%M {sec+3600}), and to decrease an hour use (%H:%M {sec-3600}).": null, 256 | "View": null, 257 | "View ElevenClock on GitHub": null, 258 | "View ElevenClock's homepage": null, 259 | "View ElevenClock's source code. From there, you can report bugs or suggest features, or even contribute direcly to The ElevenClock Project": "View ElevenClock's source code. From there, you can report bugs or suggest features, or even contribute directly to The ElevenClock Project", 260 | "W": null, 261 | "Wait a second!": null, 262 | "Weekday": null, 263 | "Week Number": null, 264 | "Welcome to Elevenclock!": null, 265 | "Welcome to ElevenClock": null, 266 | "What time do you want to see?": null, 267 | "White&Black": null, 268 | "Yes": null, 269 | "You are now ready to go!": null, 270 | "You can use HTML tags to set bold, italics or change the color of a piece of text through the <span style=\"color: red\"></span> tag": null, 271 | "You might lose functionalities, like the notification counter or the dynamic background": null, 272 | "You need to enable the checkbox above\nin order to change those settings": null 273 | } -------------------------------------------------------------------------------- /elevenclock/lang/lang_fa.json: -------------------------------------------------------------------------------- 1 | { 2 | "{0} {0} {0} Contributors, please add your names/usernames separated by comas (for credit purposes)": null, 3 | "{0} {0} {0} temp": null, 4 | "10 hours": "۱۰ ساعت", 5 | "10 minutes": "۱۰ دقیقه", 6 | "1 hour": "۱ ساعت", 7 | "24 hours": "۲۴ ساعت", 8 | "2 hours": "۲ ساعت", 9 | "30 minutes": "۳۰ دقیقه", 10 | "4 hours": "۴ ساعت", 11 | "About": null, 12 | "About ElevenClock version {0}:": null, 13 | "About Qt": "درباره Qt", 14 | "About the language pack:": null, 15 | "Accent": null, 16 | "Add the \"Show Desktop\" button on the left corner of every clock": "اضافه کردن دکمه \"نمایش دسکتاپ\" به گوشه‌ی چپ ساعت", 17 | "Adjust horizontal clock position": "تنظیم مکان ساعت در جهت افقی ", 18 | "Adjust vertical clock position": "تنظیم مکان ساعت در جهت عمودی", 19 | "Align the clock text to the center": "تراز متن ساعت در وسط", 20 | "Any text can be placed here. To place items such as date and time, please use the 1989 C standard. Check the format codes on the following link:": null, 21 | "Apply": "اعمال تغییرات", 22 | "Are you sure do you want to blacklist the monitor \"{0}\"?": null, 23 | "Automatically check for updates": null, 24 | "Automatically install available updates": null, 25 | "{0} needs to be disabled to change this setting": null, 26 | "{0} needs to be enabled to change this setting": null, 27 | "Blacklisting a monitor will hide the clock on this monitor permanently.": null, 28 | "Blacklist Monitor": null, 29 | "Blacklist this monitor": null, 30 | "Black&White": null, 31 | "Update to the latest version!": null, 32 | "But here are other things you can do:": null, 33 | "Bypass update provider authenticity check (NOT RECOMMENDED, AT YOUR OWN RISK)": null, 34 | "Change": null, 35 | "Change date and time": null, 36 | "Change date and time format (Regional settings)": null, 37 | "Change startup behaviour": null, 38 | "Change task": null, 39 | "Change the action done when the clock is clicked": null, 40 | "Change the action done when the clock is double-clicked": null, 41 | "Change the action done when the clock is middle-clicked": null, 42 | "Change the height of the clock": null, 43 | "Change the width of the clock": null, 44 | "Choose the setting to toggle when clock is clicked": null, 45 | "Choose the setting to toggle when double-clicked": null, 46 | "Choose the setting to toggle when middle-clicked": null, 47 | "Click on Apply to apply and preview the format": null, 48 | "Clock {0} on {1}": null, 49 | "Clock {0} on monitor {1}": null, 50 | "Clock Appearance:": null, 51 | "Clock features:": null, 52 | "Clock position and size:": null, 53 | "Clock Settings:": null, 54 | "Clock's font, font size, font color and background, text alignment": null, 55 | "Clock size preferences, position offset, clock at the left, etc.": null, 56 | "Clock tools": null, 57 | "Clone style from another clock": null, 58 | "Close": null, 59 | "Close settings": null, 60 | "Copy date/time": null, 61 | "Copy log to clipboard": null, 62 | "Couldn't load the announcement image": null, 63 | "Couldn't load the announcements. Please try again later": null, 64 | "Custom format rules:": null, 65 | "Customize ElevenClock even more": null, 66 | "Customize the clock on Windows 11": null, 67 | "Date format, Time format, seconds,weekday, weeknumber, regional settings": null, 68 | "Date & Time Settings:": null, 69 | "Debbugging information:": null, 70 | "Default": null, 71 | "Developing is hard, and this aplication is free. But if you liked the application, you can always buy me a coffee :)": null, 72 | "Disable clock blurry texture": null, 73 | "Disable Copilot button": null, 74 | "Disabled": null, 75 | "Disable hiding the default windows clock": null, 76 | "Disable the notification badge": null, 77 | "Disable the tooltip shown when the clock is hovered": null, 78 | "Disable tooltip's blurry background": null, 79 | "Donate": null, 80 | "Do NOT update the language files dynamically": null, 81 | "Do you want to open the global settings instead?": null, 82 | "ElevenClock": null, 83 | "ElevenClock can hide when there's a fullscreen window present (when you are watching a video, you are playing, etc.), but it can also show over those windows (It might be useful if you use fullscreened terminals, etc.).

Please select one of the following and click next to continue": null, 84 | "ElevenClock has not been machine translated. The following users have been in charge of the translations:": null, 85 | "ElevenClock has updated to version {0} successfully\nPlease see GitHub for the changelog": null, 86 | "ElevenClock is an Open-Source application made with the help of other libraries made by the community:": null, 87 | "ElevenClock is downloading updates": null, 88 | "ElevenClock language locale:": null, 89 | "ElevenClock Settings": null, 90 | "ElevenClock's language": null, 91 | "ElevenClock's log": null, 92 | "ElevenClock Updater": null, 93 | "ElevenClock v{0}": null, 94 | "ElevenClock version:": null, 95 | "ElevenClock wouldn't have been possible with the help of our dear contributors:": null, 96 | "Empty the recycle bin": null, 97 | "Empty the recycle bin (Without confirmation)": null, 98 | "Enable Copilot button": null, 99 | "Enable internet time sync": null, 100 | "Enable low-cpu mode": null, 101 | "Enable really silent updates": null, 102 | "Enable the new notification indicator (Windows 11 build 22631 or higher)": null, 103 | "Export": null, 104 | "Export log as a file": null, 105 | "Export settings to a local file": null, 106 | "Fetching latest announcement, please wait...": null, 107 | "Finish": null, 108 | "Fixes and other experimental features: (Use ONLY if something is not working)": null, 109 | "(for advanced users only)": null, 110 | "Force the clock to be at the bottom of the screen": null, 111 | "Force the clock to be at the top of the screen": null, 112 | "Force the clock to be transparent if any window shows in fullscreen": null, 113 | "Ft. Seconds": null, 114 | "Fullscreen behaviour": null, 115 | "Fullscreen behaviour, low cpu mode, other miscellaneous preferences": null, 116 | "General Settings:": null, 117 | "Get started": null, 118 | "Help": null, 119 | "Hide ElevenClock": null, 120 | "Hide extended options from the clock right-click menu (needs a restart to be applied)": null, 121 | "Hide the clock, as the default windows clock would do.": null, 122 | "Hide the clock during 10 seconds when clicked": null, 123 | "Hide the clock during 5 seconds when hoveredwith the mouse": null, 124 | "Hide the clock in fullscreen mode": null, 125 | "Hide the clock (Recommended)": null, 126 | "Hide this clock": null, 127 | "If you already know how does this work, or you want to skip the welcome wizard, please click on the bottom-left Skip button.": null, 128 | "If you don't know which one is the best, choose {0}": null, 129 | "If you don't understand what is happening, please uncheck the checkbox over the text area": null, 130 | "Ignore mouse clicks when on fullscreen": null, 131 | "Import": null, 132 | "Import settings from a local file": null, 133 | "Increase the length of the double-click period": null, 134 | "Info, report a bug, submit a feature request, donate, about": null, 135 | "Install update": null, 136 | "Internet date and time": null, 137 | "Internet sync frequency": null, 138 | "Internet time": null, 139 | "Invalid time format\nPlease follow the\nC 1989 Standards": null, 140 | "Invalid time format\nPlease modify it\nin the settings": null, 141 | "Language pack author(s), help translating ElevenClock": null, 142 | "Let's talk: Format": null, 143 | "Local time": null, 144 | "Log, debugging information": null, 145 | "Modifying Clock {0} on the monitor {1}": null, 146 | "More Info": null, 147 | "Move this clock to the bottom": null, 148 | "Move this clock to the left": null, 149 | "Move this clock to the right": null, 150 | "Move this clock to the top": null, 151 | "Next": null, 152 | "No": null, 153 | "No action": null, 154 | "No results were found": null, 155 | "Nothing to preview": null, 156 | "Notification badge, clicked action, show desktop button, etc.": null, 157 | "Notification settings": null, 158 | "Now you should see the clock everywhere": null, 159 | "Ok": null, 160 | "One last thing: Appearance": null, 161 | "Only Date": null, 162 | "Only Time": null, 163 | "Open": null, 164 | "Open ElevenClock's log": null, 165 | "Open GitHub": null, 166 | "Open global settings": null, 167 | "Open online help to troubleshoot problems": null, 168 | "Open page": null, 169 | "Open quick settings": null, 170 | "Open run dialog": null, 171 | "Open search menu": null, 172 | "Open start menu": null, 173 | "Open task manager": null, 174 | "Open the settings window and customize ElevenClock even further.": null, 175 | "Open the welcome wizard": null, 176 | "Paste a URL from the world clock api or equivalent": null, 177 | "Pick a color": null, 178 | "Pin the clock to the desktop": null, 179 | "Please make sure to install ElevenClock from official sources only. Also, using ElevenClock implies the acceptation of the GPLv3 license": null, 180 | "Please select one of the following and click next.": null, 181 | "Please select the clock style you like the most. You will be able to change this after in the settings window": null, 182 | "Please select the date and time format you like the most. You will be able to change this after in the settings window": null, 183 | "Precise internet time. Ideal if you are not using any kind of VPN or proxy": null, 184 | "Python date and time formats": null, 185 | "Quit ElevenClock": null, 186 | "Regional settings": null, 187 | "Reload Clocks": null, 188 | "Reload clocks automatically every 5 minutes": null, 189 | "Reload clocks right after exiting from sleep": null, 190 | "Reload log": null, 191 | "Remember that this wizard can be run at any time from the Settings Window": null, 192 | "Report": null, 193 | "Report an issue/request a feature": null, 194 | "Reset": null, 195 | "Reset ElevenClock preferences to defaults": null, 196 | "Reset monitor blacklisting status": null, 197 | "Restart ElevenClock": null, 198 | "Restore horizontal position": null, 199 | "Restore vertical position": null, 200 | "Return to top": null, 201 | "Search on the settings": null, 202 | "Select custom color": null, 203 | "Select custom font": null, 204 | "Select font": null, 205 | "Select internet time provider, change sync frequency": null, 206 | "Set a custom date and time format": null, 207 | "Set a custom network time provider": null, 208 | "Set clock {0} on monitor {1} to have a different style that the other clocks.": null, 209 | "Settings for clock {0} on the monitor {1} - ElevenClock Settings": null, 210 | "Settings for this clock": null, 211 | "Show a second clock on the other end of the taskbar": null, 212 | "Show calendar": null, 213 | "Show date on the clock": null, 214 | "Show desktop": null, 215 | "Show ElevenClock on system tray": null, 216 | "Show missing translation strings": null, 217 | "Show seconds on the clock": null, 218 | "Show the clock at the left of the screen": null, 219 | "Show the clock over fullscreen windows. This might cover some in-app controls, like youtube's exit fullscreen button, but it might be useful to see the time when playing": null, 220 | "Show the clock over the fullscreen window": null, 221 | "Show the clock when the taskbar is set to hide automatically": null, 222 | "Show the local computer time. The time will not be synced with the internet and might be inaccurate": null, 223 | "Show time on the clock": null, 224 | "Show weekday on the clock": null, 225 | "Show week number on the clock": null, 226 | "Skip": null, 227 | "Start": null, 228 | "Success": null, 229 | "Suport the developer": null, 230 | "Support the dev: Give me a coffee☕": null, 231 | "Sync time with the internet": null, 232 | "System architecture:": null, 233 | "System locale:": null, 234 | "System version:": null, 235 | "Task Manager": null, 236 | "Testing features and error-fixing tools": null, 237 | "The monitors were unblacklisted successfully.": null, 238 | "Third party licenses": null, 239 | "Third Party Open-Source Software in Elevenclock {0} (And their licenses)": null, 240 | "This action can be reverted from the settings window, under Clock position and size": null, 241 | "This wizard will help you configure and customize ElevenClock. Click Start to get started!": null, 242 | "To disable the zero-padding effect, add a # in between the % and the code: non-zero-padded hours would be %#H, and zero-padded hours would be %H": null, 243 | "Toggle ElevenClock setting": null, 244 | "Tooltip Appearance:": null, 245 | "Tooltip's font, font size, font color and background": null, 246 | "Total RAM:": null, 247 | "Translate ElevenClock to your language": null, 248 | "Updates, icon tray, language": null, 249 | "Use a custom background color": null, 250 | "Use a custom font": null, 251 | "Use a custom font color": null, 252 | "Use a custom font size": null, 253 | "Use a custom line height": null, 254 | "Use the notation {%H+1} to specify offsets. Replace %H with the desired value and +1 for a positive or negative number (+n or -n, respectively, for a n offset), representing the offset.": null, 255 | "Use the notation (%H {sec+1}) on the end of string to specify offset in seconds. For example, to add an hour and view in format HH:MM use (%H:%M {sec+3600}), and to decrease an hour use (%H:%M {sec-3600}).": null, 256 | "View": null, 257 | "View ElevenClock on GitHub": null, 258 | "View ElevenClock's homepage": null, 259 | "View ElevenClock's source code. From there, you can report bugs or suggest features, or even contribute direcly to The ElevenClock Project": null, 260 | "W": null, 261 | "Wait a second!": null, 262 | "Weekday": null, 263 | "Week Number": null, 264 | "Welcome to Elevenclock!": null, 265 | "Welcome to ElevenClock": null, 266 | "What time do you want to see?": null, 267 | "White&Black": null, 268 | "Yes": null, 269 | "You are now ready to go!": null, 270 | "You can use HTML tags to set bold, italics or change the color of a piece of text through the <span style=\"color: red\"></span> tag": null, 271 | "You might lose functionalities, like the notification counter or the dynamic background": null, 272 | "You need to enable the checkbox above\nin order to change those settings": null 273 | } -------------------------------------------------------------------------------- /elevenclock/lang/lang_tools.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | languageReference = { 4 | "default": "System language", 5 | "ar" : "Arabic - عربي‎", 6 | "bg" : "Bulgarian - български", 7 | "bn" : "Bangla - বাংলা", 8 | "bs" : "Bosnian - Bosanski", 9 | "ca" : "Catalan - Català", 10 | "cs" : "Czech - Čeština", 11 | "da" : "Danish - Dansk", 12 | "de" : "German - Deutsch", 13 | "el" : "Greek - Ελληνικά", 14 | "en" : "English - English", 15 | "es" : "Spanish - Español", 16 | "et" : "Estonian - eesti", 17 | "fa" : "Persian - فارسی‎", 18 | "fi" : "Finnish - Suomi", 19 | "fr" : "French - Français", 20 | "he" : "Hebrew - עִבְרִית‎", 21 | "hi" : "Hindi - हिंदी", 22 | "hr" : "Croatian - Hrvatski", 23 | "hu" : "Hungarian - Magyar", 24 | "id" : "Indonesian - Bahasa Indonesia", 25 | "it" : "Italian - Italiano", 26 | "ja" : "Japanese - 日本語", 27 | "ko" : "Korean - 한국어", 28 | "lt" : "Lithuanian - Lietuvių", 29 | "lv" : "Latvian - Latviski", 30 | "nb" : "Norwegian (bokmål)", 31 | "nn" : "Norwegian (nynorsk)", 32 | "nl" : "Dutch - Nederlands", 33 | "pl" : "Polish - Polski", 34 | "pt_BR" : "Portuguese (Brazil)", 35 | "pt_PT" : "Portuguese (Portugal)", 36 | "ro" : "Romanian - Română", 37 | "ru" : "Russian - Русский", 38 | "si" : "Sinhala - සිංහල", 39 | "sk" : "Slovak - Slovenčina", 40 | "sl" : "Slovene - Slovenščina", 41 | "sr" : "Serbian - Srpski", 42 | "sv" : "Swedish - Svenska", 43 | "tg" : "Tagalog - Tagalog", 44 | "th" : "Thai - ภาษาไทย", 45 | "tr" : "Turkish - Türkçe", 46 | "ua" : "Ukranian - Yкраї́нська", 47 | "vi" : "Vietnamese - Tiếng Việt", 48 | "zh_CN" : "Simplified Chinese (China)", 49 | "zh_TW" : "Traditional Chinese (Taiwan)", 50 | } 51 | 52 | 53 | languageRemap = { 54 | "pt-BR": "pt_BR", 55 | "pt-PT": "pt_PT", 56 | "uk": "ua", 57 | "zh-Hans-CN": "zh_CN", 58 | "zh-Hant-TW": "zh_TW", 59 | } 60 | 61 | 62 | # ISO 3166-1 63 | languageFlagsRemap = { 64 | "ar": "sa", 65 | "bn": "bd", 66 | "bs": "ba", 67 | "ca": "ad", 68 | "cs": "cz", 69 | "da": "dk", 70 | "el": "gr", 71 | "en": "gb", 72 | "et": "ee", 73 | "fa": "ir", 74 | "he": "il", 75 | "hi": "in", 76 | "ja": "jp", 77 | "ko": "kr", 78 | "nb": "no", 79 | "nn": "no", 80 | "pt_BR": "br", 81 | "pt_PT": "pt", 82 | "si": "lk", 83 | "sl": "si", 84 | "sr": "rs", 85 | "sv": "se", 86 | "tg": "ph", 87 | "vi": "vn", 88 | "zh_CN": "cn", 89 | "zh_TW": "tw", 90 | "zh": "cn", 91 | } 92 | 93 | 94 | def getMarkdownSupportLangs(): 95 | from data.translations import languageCredits, untranslatedPercentage 96 | 97 | readmeLangs = [ 98 | "| Language | Translated | Translator(s) |", 99 | "| :-- | :-- | --- |", 100 | ] 101 | 102 | dir = os.path.dirname(__file__) 103 | for lang, langName in languageReference.items(): 104 | if (not os.path.exists(f"{dir}/lang_{lang}.json")): continue 105 | perc = untranslatedPercentage[lang] if (lang in untranslatedPercentage) else "100%" 106 | if (perc == "0%"): continue 107 | langName = languageReference[lang] if (lang in languageReference) else lang 108 | flag = languageFlagsRemap[lang] if (lang in languageFlagsRemap) else lang 109 | credits = makeURLFromTranslatorList(languageCredits[lang] if (lang in languageCredits) else "") 110 | readmeLangs.append(f"|   {langName} | {perc} | {credits} |") 111 | readmeLangs.append("") 112 | 113 | return "\n".join(readmeLangs) 114 | 115 | 116 | def getTranslatorsFromCredits(translators: str) -> list: 117 | from data.contributors import contributors 118 | if translators == None: 119 | return [] 120 | credits: list = [] 121 | translatorList = [] 122 | translatorData = {} 123 | for translator in translators.split(","): 124 | translatorStriped = translator.strip() 125 | if (translatorStriped != ""): 126 | translatorPrefixed = (translatorStriped[0] == "@") 127 | if (translatorPrefixed): 128 | translatorStriped = translatorStriped[1:] 129 | link = "" 130 | if (translatorPrefixed or translatorStriped in contributors): 131 | link = f"https://github.com/{translatorStriped}" 132 | translatorList.append(translatorStriped) 133 | translatorData[translatorStriped] = { 134 | "name": translatorStriped, 135 | "link": link, 136 | } 137 | translatorList.sort(key=str.casefold) 138 | for translator in translatorList: 139 | credits.append(translatorData[translator]) 140 | return credits 141 | 142 | 143 | def makeURLFromTranslatorList(translators: list) -> str: 144 | if translators == None: 145 | return "" 146 | credits: list[str] = [] 147 | for translator in translators: 148 | link = translator.get("link") 149 | name = translator.get("name") 150 | if (link): 151 | credits.append(f"[{name}]({link})") 152 | else: 153 | credits.append(name) 154 | return ", ".join(credits) 155 | -------------------------------------------------------------------------------- /elevenclock/lang/languages.py: -------------------------------------------------------------------------------- 1 | from lang.lang_tools import languageReference 2 | 3 | lang = {} 4 | englang = {} 5 | languages = {} # will be auto-generated 6 | 7 | ## auto-generate map of files 8 | for key in languageReference.keys(): 9 | if (key != "default"): 10 | languages[key] = f"lang_{key}.json" 11 | 12 | debugLang = False 13 | 14 | -------------------------------------------------------------------------------- /elevenclock/lang/translated_percentage.py: -------------------------------------------------------------------------------- 1 | # Autogenerated file, do not modify it!!! 2 | # The following list includes ONLY non-full translated files. 3 | 4 | untranslatedPercentage = { 5 | "ar": "69%", 6 | "bg": "16%", 7 | "bs": "5%", 8 | "cs": "98%", 9 | "da": "99%", 10 | "el": "17%", 11 | "es": "97%", 12 | "et": "83%", 13 | "fa": "5%", 14 | "fi": "95%", 15 | "he": "83%", 16 | "hr": "79%", 17 | "hu": "90%", 18 | "id": "83%", 19 | "it": "97%", 20 | "ja": "90%", 21 | "lt": "18%", 22 | "lv": "55%", 23 | "nl": "83%", 24 | "pl": "97%", 25 | "pt_BR": "97%", 26 | "ro": "83%", 27 | "ru": "98%", 28 | "sk": "28%", 29 | "sr": "18%", 30 | "sv": "69%", 31 | "th": "73%", 32 | "tr": "97%", 33 | "ua": "90%", 34 | "vi": "91%" 35 | } -------------------------------------------------------------------------------- /elevenclock/resources/about_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/about_black.png -------------------------------------------------------------------------------- /elevenclock/resources/about_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/about_white.png -------------------------------------------------------------------------------- /elevenclock/resources/accent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/accent.png -------------------------------------------------------------------------------- /elevenclock/resources/appearance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/appearance.png -------------------------------------------------------------------------------- /elevenclock/resources/appearance_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/appearance_black.png -------------------------------------------------------------------------------- /elevenclock/resources/appearance_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/appearance_white.png -------------------------------------------------------------------------------- /elevenclock/resources/blacklistscreen_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/blacklistscreen_black.png -------------------------------------------------------------------------------- /elevenclock/resources/blacklistscreen_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/blacklistscreen_white.png -------------------------------------------------------------------------------- /elevenclock/resources/bug_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/bug_black.png -------------------------------------------------------------------------------- /elevenclock/resources/bug_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/bug_white.png -------------------------------------------------------------------------------- /elevenclock/resources/bw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/bw.png -------------------------------------------------------------------------------- /elevenclock/resources/cafe_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/cafe_color.png -------------------------------------------------------------------------------- /elevenclock/resources/clock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/clock.png -------------------------------------------------------------------------------- /elevenclock/resources/clock_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/clock_black.png -------------------------------------------------------------------------------- /elevenclock/resources/clock_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/clock_white.png -------------------------------------------------------------------------------- /elevenclock/resources/close_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/close_black.png -------------------------------------------------------------------------------- /elevenclock/resources/close_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/close_white.png -------------------------------------------------------------------------------- /elevenclock/resources/coffee_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/coffee_color.png -------------------------------------------------------------------------------- /elevenclock/resources/collapse_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/collapse_black.png -------------------------------------------------------------------------------- /elevenclock/resources/collapse_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/collapse_white.png -------------------------------------------------------------------------------- /elevenclock/resources/copilot_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/copilot_color.png -------------------------------------------------------------------------------- /elevenclock/resources/cross_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/cross_black.png -------------------------------------------------------------------------------- /elevenclock/resources/cross_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/cross_white.png -------------------------------------------------------------------------------- /elevenclock/resources/customClock_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/customClock_black.png -------------------------------------------------------------------------------- /elevenclock/resources/customClock_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/customClock_white.png -------------------------------------------------------------------------------- /elevenclock/resources/customize_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/customize_color.png -------------------------------------------------------------------------------- /elevenclock/resources/datetime_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/datetime_black.png -------------------------------------------------------------------------------- /elevenclock/resources/datetime_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/datetime_white.png -------------------------------------------------------------------------------- /elevenclock/resources/defaultClock_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/defaultClock_black.png -------------------------------------------------------------------------------- /elevenclock/resources/defaultClock_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/defaultClock_white.png -------------------------------------------------------------------------------- /elevenclock/resources/default_format.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/default_format.png -------------------------------------------------------------------------------- /elevenclock/resources/default_style.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/default_style.png -------------------------------------------------------------------------------- /elevenclock/resources/desk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/desk.png -------------------------------------------------------------------------------- /elevenclock/resources/deskSettings_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/deskSettings_color.png -------------------------------------------------------------------------------- /elevenclock/resources/desktop_cactus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/desktop_cactus.png -------------------------------------------------------------------------------- /elevenclock/resources/down-arrow_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/down-arrow_black.png -------------------------------------------------------------------------------- /elevenclock/resources/down-arrow_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/down-arrow_white.png -------------------------------------------------------------------------------- /elevenclock/resources/empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/empty.png -------------------------------------------------------------------------------- /elevenclock/resources/empty_bell_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/empty_bell_black.png -------------------------------------------------------------------------------- /elevenclock/resources/empty_bell_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/empty_bell_white.png -------------------------------------------------------------------------------- /elevenclock/resources/expand_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/expand_black.png -------------------------------------------------------------------------------- /elevenclock/resources/expand_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/expand_white.png -------------------------------------------------------------------------------- /elevenclock/resources/experiment_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/experiment_black.png -------------------------------------------------------------------------------- /elevenclock/resources/experiment_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/experiment_white.png -------------------------------------------------------------------------------- /elevenclock/resources/filled_bell_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/filled_bell_black.png -------------------------------------------------------------------------------- /elevenclock/resources/filled_bell_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/filled_bell_white.png -------------------------------------------------------------------------------- /elevenclock/resources/finish_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/finish_color.png -------------------------------------------------------------------------------- /elevenclock/resources/formatClock_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/formatClock_black.png -------------------------------------------------------------------------------- /elevenclock/resources/formatClock_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/formatClock_white.png -------------------------------------------------------------------------------- /elevenclock/resources/formatting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/formatting.png -------------------------------------------------------------------------------- /elevenclock/resources/further_custom_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/further_custom_color.png -------------------------------------------------------------------------------- /elevenclock/resources/github_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/github_color.png -------------------------------------------------------------------------------- /elevenclock/resources/globe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/globe.png -------------------------------------------------------------------------------- /elevenclock/resources/gotop_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/gotop_black.png -------------------------------------------------------------------------------- /elevenclock/resources/gotop_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/gotop_white.png -------------------------------------------------------------------------------- /elevenclock/resources/hide_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/hide_black.png -------------------------------------------------------------------------------- /elevenclock/resources/hide_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/hide_color.png -------------------------------------------------------------------------------- /elevenclock/resources/hide_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/hide_white.png -------------------------------------------------------------------------------- /elevenclock/resources/icon.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/icon.bmp -------------------------------------------------------------------------------- /elevenclock/resources/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/icon.ico -------------------------------------------------------------------------------- /elevenclock/resources/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/icon.png -------------------------------------------------------------------------------- /elevenclock/resources/internet_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/internet_black.png -------------------------------------------------------------------------------- /elevenclock/resources/internet_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/internet_white.png -------------------------------------------------------------------------------- /elevenclock/resources/lang_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/lang_black.png -------------------------------------------------------------------------------- /elevenclock/resources/lang_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/lang_white.png -------------------------------------------------------------------------------- /elevenclock/resources/launch_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/launch_black.png -------------------------------------------------------------------------------- /elevenclock/resources/launch_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/launch_white.png -------------------------------------------------------------------------------- /elevenclock/resources/license_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/license_color.png -------------------------------------------------------------------------------- /elevenclock/resources/maximize_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/maximize_black.png -------------------------------------------------------------------------------- /elevenclock/resources/maximize_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/maximize_white.png -------------------------------------------------------------------------------- /elevenclock/resources/minimize_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/minimize_black.png -------------------------------------------------------------------------------- /elevenclock/resources/minimize_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/minimize_white.png -------------------------------------------------------------------------------- /elevenclock/resources/monitor_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/monitor_color.png -------------------------------------------------------------------------------- /elevenclock/resources/moon_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/moon_black.png -------------------------------------------------------------------------------- /elevenclock/resources/moon_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/moon_white.png -------------------------------------------------------------------------------- /elevenclock/resources/move_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/move_black.png -------------------------------------------------------------------------------- /elevenclock/resources/move_horizontal_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/move_horizontal_black.png -------------------------------------------------------------------------------- /elevenclock/resources/move_horizontal_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/move_horizontal_white.png -------------------------------------------------------------------------------- /elevenclock/resources/move_vertical_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/move_vertical_black.png -------------------------------------------------------------------------------- /elevenclock/resources/move_vertical_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/move_vertical_white.png -------------------------------------------------------------------------------- /elevenclock/resources/move_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/move_white.png -------------------------------------------------------------------------------- /elevenclock/resources/msdos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/msdos.png -------------------------------------------------------------------------------- /elevenclock/resources/msstore_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/msstore_color.png -------------------------------------------------------------------------------- /elevenclock/resources/next_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/next_black.png -------------------------------------------------------------------------------- /elevenclock/resources/next_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/next_white.png -------------------------------------------------------------------------------- /elevenclock/resources/notif_assist_empty_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/notif_assist_empty_black.png -------------------------------------------------------------------------------- /elevenclock/resources/notif_assist_empty_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/notif_assist_empty_white.png -------------------------------------------------------------------------------- /elevenclock/resources/notif_assist_filled_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/notif_assist_filled_black.png -------------------------------------------------------------------------------- /elevenclock/resources/notif_assist_filled_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/notif_assist_filled_white.png -------------------------------------------------------------------------------- /elevenclock/resources/onlydate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/onlydate.png -------------------------------------------------------------------------------- /elevenclock/resources/onlytime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/onlytime.png -------------------------------------------------------------------------------- /elevenclock/resources/plugin_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/plugin_black.png -------------------------------------------------------------------------------- /elevenclock/resources/plugin_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/plugin_white.png -------------------------------------------------------------------------------- /elevenclock/resources/previous_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/previous_black.png -------------------------------------------------------------------------------- /elevenclock/resources/previous_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/previous_white.png -------------------------------------------------------------------------------- /elevenclock/resources/restart_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/restart_black.png -------------------------------------------------------------------------------- /elevenclock/resources/restart_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/restart_white.png -------------------------------------------------------------------------------- /elevenclock/resources/rocket_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/rocket_color.png -------------------------------------------------------------------------------- /elevenclock/resources/seconds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/seconds.png -------------------------------------------------------------------------------- /elevenclock/resources/settings_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/settings_black.png -------------------------------------------------------------------------------- /elevenclock/resources/settings_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/settings_white.png -------------------------------------------------------------------------------- /elevenclock/resources/show_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/show_color.png -------------------------------------------------------------------------------- /elevenclock/resources/size_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/size_black.png -------------------------------------------------------------------------------- /elevenclock/resources/size_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/size_white.png -------------------------------------------------------------------------------- /elevenclock/resources/taskbarbg_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/taskbarbg_black.png -------------------------------------------------------------------------------- /elevenclock/resources/taskbarbg_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/taskbarbg_white.png -------------------------------------------------------------------------------- /elevenclock/resources/taskmgr_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/taskmgr_black.png -------------------------------------------------------------------------------- /elevenclock/resources/taskmgr_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/taskmgr_white.png -------------------------------------------------------------------------------- /elevenclock/resources/tick_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/tick_black.png -------------------------------------------------------------------------------- /elevenclock/resources/tick_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/tick_white.png -------------------------------------------------------------------------------- /elevenclock/resources/timespan_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/timespan_color.png -------------------------------------------------------------------------------- /elevenclock/resources/tools_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/tools_black.png -------------------------------------------------------------------------------- /elevenclock/resources/tools_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/tools_white.png -------------------------------------------------------------------------------- /elevenclock/resources/tooltip_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/tooltip_black.png -------------------------------------------------------------------------------- /elevenclock/resources/tooltip_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/tooltip_white.png -------------------------------------------------------------------------------- /elevenclock/resources/video_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/video_color.png -------------------------------------------------------------------------------- /elevenclock/resources/wb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/wb.png -------------------------------------------------------------------------------- /elevenclock/resources/weekday.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/weekday.png -------------------------------------------------------------------------------- /elevenclock/resources/weeknumber.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/weeknumber.png -------------------------------------------------------------------------------- /elevenclock/resources/win95.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/elevenclock/resources/win95.png -------------------------------------------------------------------------------- /elevenclock/versions.py: -------------------------------------------------------------------------------- 1 | version = 4.411 2 | versionName = "4.4.1.1" 3 | versionISS = "4.4.1.1" -------------------------------------------------------------------------------- /file.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/file.txt -------------------------------------------------------------------------------- /icon.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/icon.bmp -------------------------------------------------------------------------------- /icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/icon.ico -------------------------------------------------------------------------------- /icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/icon.png -------------------------------------------------------------------------------- /media/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/media/banner.png -------------------------------------------------------------------------------- /media/banner.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/media/banner.webp -------------------------------------------------------------------------------- /media/icon.ai: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/media/icon.ai -------------------------------------------------------------------------------- /media/icon.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/media/icon.bmp -------------------------------------------------------------------------------- /media/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/media/icon.ico -------------------------------------------------------------------------------- /media/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/media/icon.png -------------------------------------------------------------------------------- /media/icon.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/media/icon.webp -------------------------------------------------------------------------------- /media/img1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/media/img1.png -------------------------------------------------------------------------------- /media/img1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/media/img1.webp -------------------------------------------------------------------------------- /media/img2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/media/img2.png -------------------------------------------------------------------------------- /media/img2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/media/img2.webp -------------------------------------------------------------------------------- /media/img3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/media/img3.png -------------------------------------------------------------------------------- /media/img3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/media/img3.webp -------------------------------------------------------------------------------- /media/img4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/media/img4.png -------------------------------------------------------------------------------- /media/img4.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/media/img4.webp -------------------------------------------------------------------------------- /media/img5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/media/img5.png -------------------------------------------------------------------------------- /media/img5.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/media/img5.webp -------------------------------------------------------------------------------- /media/img6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/media/img6.png -------------------------------------------------------------------------------- /media/img6.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/media/img6.webp -------------------------------------------------------------------------------- /media/img7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/media/img7.png -------------------------------------------------------------------------------- /media/img7.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/media/img7.webp -------------------------------------------------------------------------------- /media/img8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/media/img8.png -------------------------------------------------------------------------------- /media/img8.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/media/img8.webp -------------------------------------------------------------------------------- /media/main.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/media/main.png -------------------------------------------------------------------------------- /media/media-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/media/media-icon.png -------------------------------------------------------------------------------- /media/smartscreen1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/media/smartscreen1.jpg -------------------------------------------------------------------------------- /media/smartscreen2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/media/smartscreen2.jpg -------------------------------------------------------------------------------- /media/social.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/media/social.png -------------------------------------------------------------------------------- /misc/ElevenClock Media.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/misc/ElevenClock Media.pptx -------------------------------------------------------------------------------- /misc/Solid to transparent color converter.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/misc/Solid to transparent color converter.xlsx -------------------------------------------------------------------------------- /misc/Solid to transparent color converter_light.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/misc/Solid to transparent color converter_light.xlsx -------------------------------------------------------------------------------- /misc/banner_vert_msstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marticliment/ElevenClock/4a9d901eb5e7c18fbb870e2c4b522879e34577e1/misc/banner_vert_msstore.png -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | PyInstaller==5.13.0 2 | PySide6==6.6.0 3 | keyboard 4 | psutil 5 | pytz 6 | win32mica 7 | winshell 8 | pypiwin32 -------------------------------------------------------------------------------- /requirements_install.cmd: -------------------------------------------------------------------------------- 1 | start /b build.cmd --only-requirements 2 | -------------------------------------------------------------------------------- /scripts/apply_versions.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import os 3 | 4 | os.chdir(os.path.dirname(__file__) + "/..") # move to root project 5 | 6 | try: 7 | 8 | sys.path.append("elevenclock") 9 | 10 | from versions import * 11 | 12 | def fileReplaceLinesWith(filename: str, list: dict[str, str], encoding="utf-8"): 13 | f = open(filename, "r+", encoding=encoding, errors="ignore") 14 | data = "" 15 | for line in f.readlines(): 16 | match = False 17 | for key, value in list.items(): 18 | if (line.startswith(key)): 19 | data += f"{key}{value}" 20 | match = True 21 | continue 22 | if (not match): 23 | data += line 24 | f.seek(0) 25 | f.write(data) 26 | f.truncate() 27 | f.close() 28 | 29 | 30 | fileReplaceLinesWith("ElevenClock.iss", { 31 | "#define MyAppVersion": f" \"{versionName}\"\n", 32 | "VersionInfoVersion=": f"{versionISS}\n", 33 | }, encoding = "utf-8-sig") 34 | 35 | fileReplaceLinesWith("elevenclock-version-info", { 36 | " StringStruct(u'FileVersion'": f", u'{versionName}'),\n", 37 | " StringStruct(u'ProductVersion'": f", u'{versionName}'),\n", 38 | }) 39 | print("done!") 40 | except Exception as e: 41 | print(e) 42 | -------------------------------------------------------------------------------- /scripts/check_python_version.py: -------------------------------------------------------------------------------- 1 | import platform 2 | import argparse 3 | from packaging import version 4 | 5 | parser = argparse.ArgumentParser() 6 | parser.add_argument('--min-version', help='Minimum Python version') 7 | args = parser.parse_args() 8 | 9 | actual_py=version.parse(platform.python_version()) 10 | min_py=version.parse(args.min_version) 11 | 12 | if (min_py > actual_py): 13 | print(f"Error: Python version is {actual_py}, but required {min_py} or higher!") 14 | exit(1) 15 | -------------------------------------------------------------------------------- /scripts/download_translations.py: -------------------------------------------------------------------------------- 1 | import json 2 | import os 3 | import sys 4 | import time 5 | 6 | import tolgee_requests 7 | 8 | project_dir = "elevenclock" 9 | root_dir = os.path.join(os.path.dirname(__file__), "..") 10 | os.chdir(root_dir) # move to root project 11 | 12 | sys.path.append(project_dir) 13 | 14 | from lang.lang_tools import * 15 | 16 | # Update contributors 17 | os.system("python scripts/get_contributors.py") 18 | 19 | countOfChanges = len(os.popen("git status -s").readlines()) 20 | 21 | isAutoCommit = False 22 | isSomeChanges = False 23 | 24 | if len(sys.argv)>1: 25 | if (sys.argv[1] == "--autocommit"): 26 | isAutoCommit = True 27 | else: 28 | print("nocommit") 29 | print(sys.argv[1]) 30 | 31 | 32 | import glob 33 | import zipfile 34 | 35 | os.chdir(os.path.normpath(os.path.join(root_dir, project_dir, "lang"))) 36 | 37 | print() 38 | print("-------------------------------------------------------") 39 | print() 40 | print(" Downloading updated translations...") 41 | 42 | 43 | response = tolgee_requests.export() 44 | if (not response.ok): 45 | statusCode = response.status_code 46 | print(f" Error {statusCode}: {response.text}") 47 | if (statusCode == 403): 48 | print(" APIKEY is probably wrong!") 49 | exit(1) 50 | with open("langs.zip", "wb") as f: 51 | f.write(response.content) 52 | langArchiveName = f.name 53 | 54 | 55 | print(" Download complete!") 56 | print() 57 | print("-------------------------------------------------------") 58 | print() 59 | print(" Extracting language files...") 60 | 61 | 62 | 63 | downloadedLanguages = [] 64 | zip_file = zipfile.ZipFile(langArchiveName) 65 | 66 | for file in glob.glob('lang_*.json'): # If the downloaded zip file is valid, delete old language files and extract the new ones 67 | os.remove(file) 68 | 69 | for name in zip_file.namelist(): 70 | lang = os.path.splitext(name)[0] 71 | if (lang in languageRemap): 72 | lang = languageRemap[lang] 73 | newFilename = f"lang_{lang}.json" 74 | downloadedLanguages.append(lang) 75 | 76 | try: 77 | zip_file.extract(name, "./") 78 | os.replace(name, newFilename) 79 | 80 | print(f" Extracted {newFilename}") 81 | except KeyError as e: 82 | print(type(name)) 83 | f = input(f" The file {name} was not expected to be in here. Please write the name for the file. It should follow the following structure: lang_[CODE].json: ") 84 | zip_file.extract(f, "./") 85 | os.replace(f, newFilename) 86 | print(f" Extracted {f}") 87 | zip_file.close() 88 | downloadedLanguages.sort() 89 | os.remove("langs.zip") 90 | 91 | 92 | print(" Process complete!") 93 | print() 94 | print("-------------------------------------------------------") 95 | print() 96 | print(" Generating translations file...") 97 | 98 | 99 | langPerc = {} 100 | langCredits = {} 101 | 102 | for lang in downloadedLanguages: 103 | with open(f"lang_{lang}.json", "r", encoding='utf-8') as f: 104 | data = json.load(f) 105 | c = 0 106 | a = 0 107 | for key, value in data.items(): 108 | c += 1 109 | if (value != None): 110 | a += 1 111 | credits = [] 112 | try: 113 | credits = getTranslatorsFromCredits(data["{0} {0} {0} Contributors, please add your names/usernames separated by comas (for credit purposes)"]) 114 | except KeyError as e: 115 | print(e) 116 | print("Can't get translator list!") 117 | langCredits[lang] = credits 118 | percNum = a / c 119 | perc = f"{percNum:.0%}" 120 | if (perc == "100%" and percNum < 1): 121 | perc = "99%" 122 | if (perc == "100%" or lang == "en"): 123 | continue 124 | langPerc[lang] = perc 125 | 126 | if (isAutoCommit): 127 | os.system("git add .") 128 | countOfChanges = len(os.popen("git status -s").readlines()) - countOfChanges 129 | isSomeChanges = True if countOfChanges > 0 else False 130 | 131 | outputString = f""" 132 | # Autogenerated file, do not modify it!!! 133 | 134 | untranslatedPercentage = {json.dumps(langPerc, indent=2, ensure_ascii=False)} 135 | 136 | languageCredits = {json.dumps(langCredits, indent=2, ensure_ascii=False)} 137 | """ 138 | 139 | translations_filepath = os.path.normpath(os.path.join(root_dir, project_dir, "data/translations.py")) 140 | with open(translations_filepath, "w", encoding="utf-8") as f: 141 | f.write(outputString.strip()) 142 | 143 | 144 | print(" Process complete!") 145 | print() 146 | print("-------------------------------------------------------") 147 | print() 148 | print(" Updating README.md...") 149 | 150 | 151 | # Generate language table 152 | readmeFilename = os.path.join(root_dir, "README.md") 153 | 154 | with open(readmeFilename, "r+", encoding="utf-8") as f: 155 | skip = False 156 | data = "" 157 | for line in f.readlines(): 158 | if (line.startswith("")): 159 | data += f'{line}{getMarkdownSupportLangs()}\nLast updated: {str(time.ctime(time.time()))}\n' 160 | print(" Text modified") 161 | skip = True 162 | if (line.startswith("")): 163 | skip = False 164 | if (not skip): data += line 165 | if (isSomeChanges): 166 | f.seek(0) 167 | f.write(data) 168 | f.truncate() 169 | 170 | 171 | print(" Process complete!") 172 | print() 173 | print("-------------------------------------------------------") 174 | print() 175 | 176 | if (isAutoCommit): 177 | if (not isSomeChanges): 178 | os.system("git reset --hard") # prevent clean 179 | else: 180 | os.system("pause") 181 | -------------------------------------------------------------------------------- /scripts/generate_release.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import hashlib 3 | import os 4 | from os.path import exists 5 | 6 | os.chdir(os.path.dirname(__file__) + "/..") # move to root project 7 | 8 | sys.path.append("elevenclock") 9 | sys.path.append("elevenclock/lang") 10 | from versions import versionName 11 | from lang_tools import * 12 | 13 | 14 | # generate list of translations 15 | readmeLangs = getMarkdownSupportLangs() 16 | 17 | 18 | # generate checksum 19 | sha256_hash = hashlib.sha256() 20 | checksum = "missing" 21 | shafiles = [ 22 | "ElevenClock.Installer.exe", 23 | "ElevenClock.exe", 24 | ] 25 | for filename in shafiles: 26 | if (not exists(filename)): continue 27 | f = open(filename, "rb") 28 | for byte_block in iter(lambda: f.read(4096),b""): 29 | sha256_hash.update(byte_block) 30 | checksum = sha256_hash.hexdigest() 31 | f.close() 32 | break 33 | 34 | 35 | # output 36 | release = f""" 37 | [![Downloads@{versionName}](https://img.shields.io/github/downloads/martinet101/ElevenClock/{versionName}/total?style=for-the-badge)](https://github.com/martinet101/ElevenClock/releases/download/{versionName}/ElevenClock.Installer.exe) 38 | 39 | # Changelog: 40 | * 41 | * 42 | * 43 | 44 | 45 | # Available languages: 46 | (Please note that this languages might be updated in the future by the app itself. The languages listed here are the bundled ones) 47 | {readmeLangs} 48 | 49 |

50 | SHA256: `{checksum}` 51 | """ 52 | 53 | # write output 54 | f = open("RELEASE.md", "w", encoding="utf-8") 55 | f.write(release) 56 | f.close() 57 | 58 | print() 59 | print("MD result has been saved to RELEASE.md: The contents are:") 60 | print() 61 | print() 62 | print(release) 63 | print() 64 | print() 65 | -------------------------------------------------------------------------------- /scripts/get_contributors.py: -------------------------------------------------------------------------------- 1 | import json 2 | import os 3 | 4 | project_dir = "elevenclock" 5 | root_dir = os.path.join(os.path.dirname(__file__), "..") 6 | os.chdir(root_dir) # move to root project 7 | 8 | print("Getting contributors...") 9 | 10 | try: 11 | import requests 12 | except ImportError: 13 | os.system("pip install requests") 14 | import requests 15 | 16 | response = requests.get("https://api.github.com/repos/marticliment/ElevenClock/contributors?anon=1") 17 | 18 | contributors = [] 19 | contributorsInfo = [] 20 | 21 | for contributor in response.json(): 22 | login = contributor.get("login", None) 23 | if (contributor.get("type") == "User" and login): 24 | contributors.append(login) 25 | contributorsInfo.append({ 26 | "name": login, 27 | "link": contributor.get("html_url"), 28 | "contributions": contributor.get("contributions"), 29 | }) 30 | 31 | output = f""" 32 | # Autogenerated file, do not modify it!!! 33 | 34 | contributors = {json.dumps(contributors, indent=2, ensure_ascii=False)} 35 | 36 | contributorsInfo = {json.dumps(contributorsInfo, indent=2, ensure_ascii=False)} 37 | """ 38 | 39 | contributors_filepath = os.path.normpath(os.path.join(root_dir, project_dir, "data/contributors.py")) 40 | with open(contributors_filepath, "w", encoding="utf-8") as f: 41 | f.write(output.strip()) 42 | 43 | print("done!") 44 | -------------------------------------------------------------------------------- /scripts/purge_unusedtranslations.py: -------------------------------------------------------------------------------- 1 | import glob 2 | import json 3 | import os 4 | 5 | try: 6 | root_dir = os.path.join(os.path.dirname(__file__), "..") 7 | os.chdir(os.path.normpath(os.path.join(root_dir, "wingetui/lang/"))) 8 | 9 | contents = "" 10 | 11 | with open("lang_en.json", "r") as f: 12 | engfile = json.load(f) 13 | 14 | os.chdir(root_dir) 15 | print(f"Working on 📂 {os.getcwd()}") 16 | 17 | for codefile in glob.glob("**/*.py", recursive=True): 18 | print(f"Reading 📄 {codefile}") 19 | with open(codefile, "r", errors="ignore") as f: 20 | contents += f.read() 21 | contents += " ################################ File division #########################################" 22 | for key in engfile.keys(): 23 | key = key.replace("\n", "\\n") 24 | if not key in contents: 25 | if not key.replace("\"", "\\\"") in contents: 26 | print(f"Unused key 😳: {key}") 27 | print("Job finished succuessfully! 😎") 28 | except Exception as e: 29 | print("FAILED:", e) 30 | 31 | os.system("pause") 32 | -------------------------------------------------------------------------------- /scripts/tolgee_requests.py: -------------------------------------------------------------------------------- 1 | import json 2 | import os 3 | 4 | try: 5 | import requests 6 | except ImportError: 7 | os.system("pip install requests") 8 | import requests 9 | 10 | 11 | __project_id = 688 # elevenclock 12 | __api_url = f"https://app.tolgee.io/v2/projects/{__project_id}" 13 | __api_key = "" 14 | __headers: dict[str, str] = {} 15 | __all_keys: dict = None 16 | 17 | 18 | try: 19 | with open("APIKEY.txt", "r") as f: 20 | __api_key = f.read().strip() 21 | if not __api_key: 22 | raise ValueError("APIKEY.txt is empty") 23 | # print("API key found in APIKEY.txt") 24 | except FileNotFoundError: 25 | __api_key = os.environ.get("TOLGEE_KEY", "") 26 | if not __api_key: 27 | __api_key = input("Write api key and press enter: ") 28 | __headers["X-API-Key"] = __api_key 29 | 30 | 31 | def export(format = "JSON", zip = True, langs: list[str] = []): 32 | url = f"{__api_url}/export" 33 | params = { 34 | "format": format, 35 | "languages": langs, 36 | "structureDelimiter": "", 37 | "filterState": [ 38 | "REVIEWED", 39 | "TRANSLATED", 40 | "UNTRANSLATED", 41 | ], 42 | "zip": zip, 43 | } 44 | response = requests.get(url, headers=__headers, params=params) 45 | return response 46 | 47 | 48 | def create_key(key): 49 | url = f"{__api_url}/keys/create" 50 | json: dict[str, str] = { 51 | "name": key 52 | } 53 | response = requests.post(url, headers=__headers, json=json) 54 | return response 55 | 56 | 57 | def get_keys(): 58 | global __all_keys 59 | if __all_keys: 60 | return __all_keys 61 | url = f"{__api_url}/keys" 62 | params = { 63 | "size": 1000, # TODO: paging... 64 | } 65 | response = requests.get(url, headers=__headers, params=params) 66 | if not response.ok: 67 | return False 68 | data = json.loads(response.text) 69 | retValue = {} 70 | for value in data["_embedded"]["keys"]: 71 | retValue[value["name"]] = value 72 | __all_keys = retValue 73 | return retValue 74 | 75 | 76 | def delete_key(key): 77 | all_keys = get_keys() 78 | key_data = all_keys.get(key) 79 | if not key_data: 80 | return False 81 | id = key_data.get("id") 82 | url = f"{__api_url}/keys" 83 | json: dict[str, str] = { 84 | "ids": [id], 85 | } 86 | response = requests.delete(url, headers=__headers, json=json) 87 | return response 88 | -------------------------------------------------------------------------------- /scripts/translation_commands.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | import json 3 | from time import sleep 4 | 5 | import tolgee_requests 6 | import translation_utils 7 | 8 | __parser = argparse.ArgumentParser() 9 | __group = __parser.add_mutually_exclusive_group(required=True) 10 | __group.add_argument("-p", "--print", help="Print unused and not translated strings", action="store_true") 11 | __group.add_argument("-c", "--create", help="Create not translated strings", action="store_true") 12 | __group.add_argument("-d", "--delete", help="Delete unused strings", action="store_true") 13 | __parser.add_argument("--online", help="Compare with Tolgee translations via API", action="store_true") 14 | __parser.add_argument("-y", "--yes", help="All answers are YES", action="store_true") 15 | __args = __parser.parse_args() 16 | 17 | 18 | def __confirm(message: str, choices: list[str], defaultValue = ""): 19 | def createChoices(): 20 | _choices: list[str] = [] 21 | for key in choices: 22 | if key == defaultValue: 23 | key = key.upper() 24 | _choices.append(key) 25 | return '/'.join(_choices) 26 | 27 | try: 28 | return (input(f"{message} [{createChoices()}]: ") or defaultValue).lower() 29 | except KeyboardInterrupt: 30 | exit(1) 31 | 32 | 33 | def encode_str(str: str, strip = 0): 34 | new_str = str 35 | if strip > 0: 36 | new_str = str[:strip].strip() 37 | return new_str.encode("utf-8") 38 | 39 | 40 | def create(strs: list[str]): 41 | count = len(strs) 42 | i = 1 43 | for key in strs: 44 | print(f"[{i}/{count}] Key: {encode_str(key, strip=100)}") 45 | i += 1 46 | if not __args.yes and __confirm("Create?", ["y", "n"], "y") != "y": 47 | continue 48 | print("Creating key... ", end="") 49 | response = tolgee_requests.create_key(key) 50 | if (not response.ok): 51 | print("Failed") 52 | print("Error", response.status_code, response.text) 53 | return 54 | else: 55 | print("Ok") 56 | sleep(0.150) 57 | print("Done") 58 | 59 | 60 | def delete(strs: list[str]): 61 | count = len(strs) 62 | i = 1 63 | for key in strs: 64 | print(f"[{i}/{count}] Key: {encode_str(key, strip=100)}") 65 | i += 1 66 | if not __args.yes and __confirm("Delete?", ["y", "n"], "y") != "y": 67 | continue 68 | print("Deleting key... ", end="") 69 | response = tolgee_requests.delete_key(key) 70 | if (not response.ok): 71 | print("Failed") 72 | print("Error", response.status_code, response.text) 73 | return 74 | else: 75 | print("Ok") 76 | sleep(0.150) 77 | print("Done") 78 | 79 | 80 | def __print(strs: list[str]): 81 | output = json.dumps(strs, ensure_ascii=False, indent=" ") 82 | print(output) 83 | 84 | 85 | def __print_all(): 86 | output = json.dumps(translation_utils.compare_strings(online=__args.online), ensure_ascii=False, indent=" ") 87 | print(output) 88 | 89 | 90 | def __delete(strs): 91 | key_name = "not_used" 92 | if key_name in strs: 93 | stringsFound = len(strs[key_name]) 94 | print(f"Found not used strings: {stringsFound}") 95 | if stringsFound > 0: 96 | sleep(1) 97 | delete(strs[key_name]) 98 | else: 99 | print(f"Key '{key_name}' missing") 100 | 101 | 102 | def __create(strs): 103 | key_name = "not_translated" 104 | if key_name in strs: 105 | stringsFound = len(strs[key_name]) 106 | print(f"Found not translated strings: {stringsFound}") 107 | if stringsFound > 0: 108 | if __args.print: 109 | __print(strs[key_name]) 110 | else: 111 | sleep(1) 112 | create(strs[key_name]) 113 | else: 114 | print(f"Key '{key_name}' missing") 115 | 116 | 117 | def __init__(): 118 | strs = translation_utils.compare_strings(online=__args.online) 119 | print("Online mode:", __args.online) 120 | 121 | if __args.print: 122 | return __print_all() 123 | 124 | if __args.create: 125 | __create(strs) 126 | return 127 | 128 | if __args.delete: 129 | __delete(strs) 130 | return 131 | 132 | 133 | __init__() 134 | -------------------------------------------------------------------------------- /scripts/translation_utils.py: -------------------------------------------------------------------------------- 1 | import json 2 | import os 3 | import re 4 | 5 | import tolgee_requests 6 | 7 | project_dir = "elevenclock" 8 | root_dir = os.path.join(os.path.dirname(__file__), "..") 9 | os.chdir(os.path.join(root_dir, project_dir)) 10 | 11 | 12 | __blacklist_strings = [ 13 | "{0} {0} {0} Contributors, please add your names/usernames separated by comas (for credit purposes)", 14 | ] 15 | 16 | 17 | # Function to remove special characters from a string 18 | def remove_special_chars(string): 19 | # Regular expression for special characters (excluding letters and digits) 20 | special_chars = r'[^a-zA-Z0-9]' 21 | # Use regular expression to remove special characters from the string 22 | return re.sub(special_chars, '', string) 23 | 24 | 25 | def get_all_strings(): 26 | regex = r'(?<=_\(["\']).+?(?=["\']\))' 27 | translation_strings: list[str] = [] 28 | 29 | for (dirpath, _dirnames, filenames) in os.walk(".", topdown=True): 30 | for file in filenames: 31 | _file_name, file_ext = os.path.splitext(file) 32 | if (file_ext != ".py"): 33 | continue 34 | with open(os.path.join(dirpath, file), "r", encoding="utf-8") as f: 35 | matches: list[str] = re.findall(regex, f.read()) 36 | for match in matches: 37 | translation_strings.append(match.encode('raw_unicode_escape').decode('unicode_escape')) 38 | 39 | translation_strings = list(set(translation_strings)) # uniq 40 | translation_strings.sort(key=lambda x: (remove_special_chars(x.lower()), x)) 41 | return translation_strings 42 | 43 | 44 | def get_all_translations(lang = "en"): 45 | with open(f"lang/lang_{lang}.json", "r", encoding="utf-8") as f: 46 | lang_strings: dict[str, str] = json.load(f) 47 | return lang_strings 48 | 49 | 50 | def get_all_translations_online(lang = "en") -> dict[str, str]: 51 | response = tolgee_requests.export(zip=False, langs=["en"]) 52 | return json.loads(response.text) 53 | 54 | 55 | def compare_strings(online = False): 56 | not_used: list[str] = [] 57 | translation_obj: dict[str, str] = {} 58 | lang_strings: dict[str, str] = {} 59 | if (online): 60 | lang_strings = get_all_translations_online() 61 | else: 62 | lang_strings = get_all_translations() 63 | for key in get_all_strings(): 64 | translation_obj[key] = "" 65 | for key in lang_strings.keys(): 66 | if (key in __blacklist_strings): 67 | continue 68 | if (key in translation_obj): 69 | del translation_obj[key] 70 | else: 71 | not_used.append(key) 72 | return { 73 | "not_used": not_used, 74 | "not_translated": list(translation_obj), 75 | } 76 | -------------------------------------------------------------------------------- /scripts/verify_translations.py: -------------------------------------------------------------------------------- 1 | import os, sys, glob, re 2 | 3 | def eprint(*args, **kwargs): 4 | print(*args, file=sys.stderr, **kwargs) 5 | 6 | try: 7 | sys.stdout.reconfigure(encoding='utf-8') 8 | Correct = True 9 | 10 | os.chdir(os.path.dirname(__file__)) 11 | os.chdir("../elevenclock/lang") 12 | for FILE in glob.glob("./lang_*.json"): 13 | with open(FILE, "r", encoding="utf-8") as f: 14 | 15 | # print(f"Begin analyzing file {FILE}") 16 | 17 | for LINE in f.readlines(): 18 | LINE = LINE.replace('\\"', '\'') 19 | 20 | if len(LINE) <= 2 or LINE.removesuffix("\n").removesuffix(",").endswith("null") or "{0} {0} {0} " in LINE: 21 | continue 22 | 23 | results = re.match(r'^ +"([^"]+)" ?: ?"([^"]+)"', LINE) 24 | BASE, COMPARE = results[1],results[2] 25 | 26 | for find in re.findall(r'{[a-zA-Z0-9]+}', BASE): 27 | if BASE.count(find) > COMPARE.count(find): 28 | Correct = False 29 | print(f"Faulting line on file {FILE}, missing key is {find} on translation \"{BASE}\", with translation {COMPARE}") 30 | 31 | sys.exit(0 if Correct else 1) 32 | 33 | except Exception as e: 34 | print(e) 35 | input("Press to close...") 36 | --------------------------------------------------------------------------------