StringSculpt is a minimalistic Windows application that allows you to quickly format and replace selected text, or generate new text using a simple keyboard shortcut.
You can find demos on StringSculpt's project page!
https://dotjust.in/projects/stringsculpt
- When the keyboard shortcut
Ctrl + Shift + Fis recognized, it calls our CustomTkinter UI.- If there is text selected, it enters "sculpt mode", where it will edit your selected text
- If there is no text selected, it enters "generative mode", where it generates any text you want based on the prompt.
- Once the text to be edited (if any), as well as the user prompt get sent to an LLM api. I personally recommend groq, as it's super fast, and free.
- Your old text is replaced by your sculpted text!
Make sure python and git are installed.
Navigate to the directory you want to install StringScript, and run:
git clone https://github.com/dot-justin/stringsculpt
cd StringSculpt
pip install -r requirements.txt
Now, you need to add your api key in the .env. I have provided a .env.example, so you can edit it and remove the .example file extension, so you're only left with .env. This is where the program will pull your api key from, and you need to edit this before you can use the program.
Contents of .env:
API_KEY=GROQ_API_KEY_HERE
BASE_URL=https://api.groq.com/openai/v1/chat/completions
Once that's finished, StringSculpt is installed and ready to go! To run the application, run:
python main.py
You won't see anything happen, so go select some text and commit the shortcut Ctrl + Shift + F to memory :)
These are all of the bugs I'm aware of. If you stumble across another one, I would be very greatful if you could open an issue! I am currently working on fixes for all of these, so keep an eye on the commit history.
- When rapid-fire selecting and formatting, some may get missed, causing the LLM to respond similar to this:
Nothing to fix here!- When this happens, unfortunately you need to select your text and reprompt.
- When doing the shortcut to active StringSculpt, if you don't let go of all of the keys in time, it won't be able to capture your selected text, and as a result, fail to format it.
- Sometimes when asking it to summarize or fix, etc. it will give a preamble like
Here is the summarized/fixed text. This is a prompting issue, and I'm playing with the prompt as well as the temperature to minimize this.
Quick actions are a quick and easy way to get StringSculpt to do specific things to your text.
For example, if you wanted a summary of the selected text, you could just input summarize and it will do so. You can also combine Quick Actions, for example: remove exclamation points and rewrite as shakespeare
| Quick Action | Description |
|---|---|
fix |
Proofreads and fixes grammar and spelling, keeping language the same |
rewrite |
Rewrites your text in a similar style as your own writing, or, if specified, someone else's writing |
replace / remove |
Searches and replaces or removes text in selected text |
finish / complete |
Finishes selected sentence or paragraph |
| Quick Action | Description |
|---|---|
summarize |
Gives an overarching summary of selected text |
action items |
Finds action items and outputs in bullet point format |
key points |
Finds key points and lists them |
notes |
Makes notes on the selected text |
- Hotkey: The default hotkey is
Ctrl + Shift + F. You can change this by modifying thehk.registercall in the script. - LLM Temperature: Adjust the creativity of the AI by changing the LLM_TEMPERATURE variable on line
18ofmain.py.
