Play WORDLE game in your terminal.

Overview

Wordle TUI

Play WORDLE game in your terminal.

The game will be kept the same as the Web version.

Prerequisites

  • Python 3.7+
  • Linux/MacOS (Windows is not supported due to upstream limits).

Quick Start

Clone the repository

git clone https://github.com/frostming/wordle-tui.git
cd wordle-tui

If you are using PDM, then:

pdm install
# Run the application
pdm run start

Otherwise, set up a new virtualenv and install the dependencies:

python3 -m venv venv
. venv/bin/activate
pip install textual pyperclip platformdirs
# Run the application
python wordle_app.py

Or, if you want to install this application:

pip install "git+https://github.com/frostming/wordle-tui.git#egg=wordle-tui"

Credits

Special Thanks to @willmcgugan who created the awesome tools.

Todo List

  • Share the result

License

MIT.

You might also like...
A cli tool , which shows you all the next possible words you can guess from in the game of Wordle.

wordle-helper A cli tool , which shows you all the next possible words you can guess from the Game Wordle. This repo has the code discussed in the You

A clone of the popular online game Wordle

wordle_clone A CLI application for wordle. Description A clone of the popular online game Wordle.

Gamestonk Terminal is an awesome stock and crypto market terminal
Gamestonk Terminal is an awesome stock and crypto market terminal

Gamestonk Terminal is an awesome stock and crypto market terminal. A FOSS alternative to Bloomberg Terminal.

Quickly open any path on your terminal window in your $EDITOR of choice!
Quickly open any path on your terminal window in your $EDITOR of choice!

Tmux fpp Plugin wrapper around Facebook PathPicker. Quickly open any path on your terminal window in your $EDITOR of choice! Demo Dependencies fpp - F

TerminalGV is a very simple client to display stats about your SNCF TGV/TER train in your terminal.
TerminalGV is a very simple client to display stats about your SNCF TGV/TER train in your terminal.

TerminalGV So I got bored in the train, TerminalGV is a very simple client to display stats about your SNCF TGV/TER train in your terminal. The "on-tr

Open a file in your locally running Visual Studio Code instance from arbitrary terminal connections.

code-connect Open a file in your locally running Visual Studio Code instance from arbitrary terminal connections. Motivation VS Code supports opening

Darkdump - Search The Deep Web Straight From Your Terminal
Darkdump - Search The Deep Web Straight From Your Terminal

Darkdump - Search The Deep Web Straight From Your Terminal About Darkdump Darkdump is a simple script written in Python3.9 in which it allows users to

uploadgram uses your Telegram account to upload files up to 2GiB, from the Terminal.

uploadgram uploadgram uses your Telegram account to upload files up to 2GiB, from the Terminal. Heavily inspired by the telegram-upload Installing: pi

This a simple tool to query the awesome ippsec.rocks website from your terminal
This a simple tool to query the awesome ippsec.rocks website from your terminal

ippsec-cli This a simple tool to query the awesome ippsec.rocks website from your terminal Installation and usage cd /opt git clone https://github.com

Comments
  • Crash on Termux

    Crash on Termux

    ❯ wordle
    ╭──────────────── Traceback (most recent call last) ─────────────────╮
    │                                                                    │
    │ /data/data/com.termux/files/usr/lib/python3.10/site-packages/textu │
    │ al/widget.py:202 in _get_lines                                     │
    │                                                                    │
    │   199 │   def _get_lines(self) -> Lines:                           │
    │   200 │   │   """Get segment lines to render the widget."""        │
    │   201 │   │   if self.render_cache is None:                        │
    │ ❱ 202 │   │   │   self.render_lines()                              │
    │   203 │   │   assert self.render_cache is not None                 │
    │   204 │   │   lines = self.render_cache.lines                      │
    │   205 │   │   return lines                                         │
    │                                                                    │
    │ ╭─────────────── locals ───────────────╮                           │
    │ │ self = GameStats(name='GameStats#1') │                           │
    │ ╰──────────────────────────────────────╯                           │
    │ /data/data/com.termux/files/usr/lib/python3.10/site-packages/textu │
    │ al/widget.py:188 in render_lines                                   │
    │                                                                    │
    │   185 │                                                            │
    │   186 │   def render_lines(self) -> None:                          │
    │   187 │   │   width, height = self.size                            │
    │ ❱ 188 │   │   renderable = self.render_styled()                    │
    │   189 │   │   options = self.console.options.update_dimensions(wid │
    │   190 │   │   lines = self.console.render_lines(renderable, option │
    │   191 │   │   self.render_cache = RenderCache(self.size, lines)    │
    │                                                                    │
    │ ╭──────────────── locals ────────────────╮                         │
    │ │ height = 20                            │                         │
    │ │   self = GameStats(name='GameStats#1') │                         │
    │ │  width = 40                            │                         │
    │ ╰────────────────────────────────────────╯                         │
    │                                                                    │
    │ /data/data/com.termux/files/usr/lib/python3.10/site-packages/textu │
    │ al/widget.py:128 in render_styled                                  │
    │                                                                    │
    │   125 │   │   Returns:                                             │
    │   126 │   │   │   RenderableType: A new renderable.                │
    │   127 │   │   """                                                  │
    │ ❱ 128 │   │   renderable = self.render()                           │
    │   129 │   │   if self.padding is not None:                         │
    │   130 │   │   │   renderable = Padding(renderable, self.padding)   │
    │   131 │   │   if self.border in self.BOX_MAP:                      │
    │                                                                    │
    │ ╭─────────────── locals ───────────────╮                           │
    │ │ self = GameStats(name='GameStats#1') │                           │
    │ ╰──────────────────────────────────────╯                           │
    │                                                                    │
    │ /data/data/com.termux/files/usr/lib/python3.10/site-packages/wordl │
    │ e_app.py:86 in render                                              │
    │                                                                    │
    │    83 │   def render(self) -> RenderableType:                      │
    │    84 │   │   total_played = self.stats["played"]                  │
    │    85 │   │   total_win = sum(self.stats["stats"])                 │
    │ ❱  86 │   │   num_guesses = len(self.stats["last_guesses"][0]) //  │
    │    87 │   │   data = {                                             │
    │    88 │   │   │   "Played": total_played,                          │
    │    89 │   │   │   "Win %": round(total_win / total_played * 100, 1 │
    │                                                                    │
    │ ╭─────────────────── locals ───────────────────╮                   │
    │ │         self = GameStats(name='GameStats#1') │                   │
    │ │ total_played = 0                             │                   │
    │ │    total_win = 0                             │                   │
    │ ╰──────────────────────────────────────────────╯                   │
    ╰────────────────────────────────────────────────────────────────────╯
    KeyError: 'last_guesses'
    ╭──────────────── Traceback (most recent call last) ─────────────────╮
    │                                                                    │
    │ /data/data/com.termux/files/usr/lib/python3.10/site-packages/textu │
    │ al/widget.py:202 in _get_lines                                     │
    │                                                                    │
    │   199 │   def _get_lines(self) -> Lines:                           │
    │   200 │   │   """Get segment lines to render the widget."""        │
    │   201 │   │   if self.render_cache is None:                        │
    │ ❱ 202 │   │   │   self.render_lines()                              │
    │   203 │   │   assert self.render_cache is not None                 │
    │   204 │   │   lines = self.render_cache.lines                      │
    │   205 │   │   return lines                                         │
    │                                                                    │
    │ ╭─────────────── locals ───────────────╮                           │
    │ │ self = GameStats(name='GameStats#1') │                           │
    │ ╰──────────────────────────────────────╯                           │
    │ /data/data/com.termux/files/usr/lib/python3.10/site-packages/textu │
    │ al/widget.py:188 in render_lines                                   │
    │                                                                    │
    │   185 │                                                            │
    │   186 │   def render_lines(self) -> None:                          │
    │   187 │   │   width, height = self.size                            │
    │ ❱ 188 │   │   renderable = self.render_styled()                    │
    │   189 │   │   options = self.console.options.update_dimensions(wid │
    │   190 │   │   lines = self.console.render_lines(renderable, option │
    │   191 │   │   self.render_cache = RenderCache(self.size, lines)    │
    │                                                                    │
    │ ╭──────────────── locals ────────────────╮                         │
    │ │ height = 20                            │                         │
    │ │   self = GameStats(name='GameStats#1') │                         │
    │ │  width = 40                            │                         │
    │ ╰────────────────────────────────────────╯                         │
    │                                                                    │
    │ /data/data/com.termux/files/usr/lib/python3.10/site-packages/textu │
    │ al/widget.py:128 in render_styled                                  │
    │                                                                    │
    │   125 │   │   Returns:                                             │
    │   126 │   │   │   RenderableType: A new renderable.                │
    │   127 │   │   """                                                  │
    │ ❱ 128 │   │   renderable = self.render()                           │
    │   129 │   │   if self.padding is not None:                         │
    │   130 │   │   │   renderable = Padding(renderable, self.padding)   │
    │   131 │   │   if self.border in self.BOX_MAP:                      │
    │                                                                    │
    │ ╭─────────────── locals ───────────────╮                           │
    │ │ self = GameStats(name='GameStats#1') │                           │
    │ ╰──────────────────────────────────────╯                           │
    │                                                                    │
    │ /data/data/com.termux/files/usr/lib/python3.10/site-packages/wordl │
    │ e_app.py:86 in render                                              │
    │                                                                    │
    │    83 │   def render(self) -> RenderableType:                      │
    │    84 │   │   total_played = self.stats["played"]                  │
    │    85 │   │   total_win = sum(self.stats["stats"])                 │
    │ ❱  86 │   │   num_guesses = len(self.stats["last_guesses"][0]) //  │
    │    87 │   │   data = {                                             │
    │    88 │   │   │   "Played": total_played,                          │
    │    89 │   │   │   "Win %": round(total_win / total_played * 100, 1 │
    │                                                                    │
    │ ╭─────────────────── locals ───────────────────╮                   │
    │ │         self = GameStats(name='GameStats#1') │                   │
    │ │ total_played = 0                             │                   │
    │ │    total_win = 0                             │                   │
    │ ╰──────────────────────────────────────────────╯                   │
    ╰────────────────────────────────────────────────────────────────────╯
    KeyError: 'last_guesses'
    ╭──────────────── Traceback (most recent call last) ─────────────────╮
    │                                                                    │
    │ /data/data/com.termux/files/usr/lib/python3.10/site-packages/textu │
    │ al/widget.py:202 in _get_lines                                     │
    │                                                                    │
    │   199 │   def _get_lines(self) -> Lines:                           │
    │   200 │   │   """Get segment lines to render the widget."""        │
    │   201 │   │   if self.render_cache is None:                        │
    │ ❱ 202 │   │   │   self.render_lines()                              │
    │   203 │   │   assert self.render_cache is not None                 │
    │   204 │   │   lines = self.render_cache.lines                      │
    │   205 │   │   return lines                                         │
    │                                                                    │
    │ ╭─────────────── locals ───────────────╮                           │
    │ │ self = GameStats(name='GameStats#1') │                           │
    │ ╰──────────────────────────────────────╯                           │
    │ /data/data/com.termux/files/usr/lib/python3.10/site-packages/textu │
    │ al/widget.py:188 in render_lines                                   │
    │                                                                    │
    │   185 │                                                            │
    │   186 │   def render_lines(self) -> None:                          │
    │   187 │   │   width, height = self.size                            │
    │ ❱ 188 │   │   renderable = self.render_styled()                    │
    │   189 │   │   options = self.console.options.update_dimensions(wid │
    │   190 │   │   lines = self.console.render_lines(renderable, option │
    │   191 │   │   self.render_cache = RenderCache(self.size, lines)    │
    │                                                                    │
    │ ╭──────────────── locals ────────────────╮                         │
    │ │ height = 20                            │                         │
    │ │   self = GameStats(name='GameStats#1') │                         │
    │ │  width = 40                            │                         │
    │ ╰────────────────────────────────────────╯                         │
    │                                                                    │
    │ /data/data/com.termux/files/usr/lib/python3.10/site-packages/textu │
    │ al/widget.py:128 in render_styled                                  │
    │                                                                    │
    │   125 │   │   Returns:                                             │
    │   126 │   │   │   RenderableType: A new renderable.                │
    │   127 │   │   """                                                  │
    │ ❱ 128 │   │   renderable = self.render()                           │
    │   129 │   │   if self.padding is not None:                         │
    │   130 │   │   │   renderable = Padding(renderable, self.padding)   │
    │   131 │   │   if self.border in self.BOX_MAP:                      │
    │                                                                    │
    │ ╭─────────────── locals ───────────────╮                           │
    │ │ self = GameStats(name='GameStats#1') │                           │
    │ ╰──────────────────────────────────────╯                           │
    │                                                                    │
    │ /data/data/com.termux/files/usr/lib/python3.10/site-packages/wordl │
    │ e_app.py:86 in render                                              │
    │                                                                    │
    │    83 │   def render(self) -> RenderableType:                      │
    │    84 │   │   total_played = self.stats["played"]                  │
    │    85 │   │   total_win = sum(self.stats["stats"])                 │
    │ ❱  86 │   │   num_guesses = len(self.stats["last_guesses"][0]) //  │
    │    87 │   │   data = {                                             │
    │    88 │   │   │   "Played": total_played,                          │
    │    89 │   │   │   "Win %": round(total_win / total_played * 100, 1 │
    │                                                                    │
    │ ╭─────────────────── locals ───────────────────╮                   │
    │ │         self = GameStats(name='GameStats#1') │                   │
    │ │ total_played = 0                             │                   │
    │ │    total_win = 0                             │                   │
    │ ╰──────────────────────────────────────────────╯                   │
    ╰────────────────────────────────────────────────────────────────────╯
    KeyError: 'last_guesses'
        /storage/emulated/0/Projects/wordle-tui  on   main 
    ❯
    

    Python 3.10.2 on Termux

    Textual works, but app doesn't

    opened by UltraStudioLTD 1
Owner
Frost Ming
Love 🐍 Python, 📷 Photography and beautiful things
Frost Ming
Play Wordle Bot - Wordle Bot written in python

Wordle Bot A Bot written in python with a CL Interface to guess adn solve Wordle

Prashant 1 Feb 25, 2022
Wordle-textual - Play Wordle from the CLI, using Textual

Wordle, playable from the CLI This project seeks to emulate Wordle in your shell

PhenoM4n4n 3 Mar 29, 2022
Wordle-solver - A tool that helps people who struggle with vocabulary to enjoy the famous game of WORDLE

Wordle-Solver Wordle-Solver helps people who struggle with vocabulary to enjoy t

Jason Chao 104 Dec 31, 2022
Lexeme - CLI to play a word-guessing game like Wordle

What is this? Python program to play a word-guessing game like Wordle, but… More addictive because you can play it over and over and over, not just on

Dan Lenski 6 Oct 26, 2022
Wordle-cli - Command-line clone of Josh Wardle's WORDLE

Command-line clone of Josh Wardle's WORDLE, inspired by Paul Battley's Ruby vers

Klipspringer 32 Jan 3, 2023
Wordle - Wordle solver with python

wordle what is wordle? https://www.powerlanguage.co.uk/wordle/ preparing $ pip i

shidocchi 0 Jan 24, 2022
Wordle breaker: A CLI tool to help you solve Wordle

Wordle Breaker A CLI tool to help you solve Wordle I decided to code a solution

Alex 4 Apr 27, 2022
Wordle for CLUE - WORDLE clone for Adafruit Clue

Wordle_for_CLUE This project is a clone of the very popular word solving puzzle

Michael Lacock 4 Feb 15, 2022
A helper program to play wordle

A helper program to play wordle

null 1 Jan 22, 2022
Play videos in the terminal.

Termvideo Play videos in the terminal (stdout). python main.py /path/to/video.mp4 Terminal size: -x output_width, -y output_height. Default autodetect

Patrick 11 Jun 13, 2022