惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - Franky
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
A
About on SuperTechFans
博客园 - 【当耐特】
Microsoft Security Blog
Microsoft Security Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
The GitHub Blog
The GitHub Blog
雷峰网
雷峰网
博客园_首页
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
IT之家
IT之家
博客园 - 叶小钗
Google DeepMind News
Google DeepMind News
aimingoo的专栏
aimingoo的专栏
博客园 - 聂微东
B
Blog RSS Feed
H
Help Net Security
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
D
DataBreaches.Net
L
LangChain Blog
Vercel News
Vercel News

Hacker News: Show HN

PurrrrrFocus: Pomodoro Timer App - App Store Workflow Engine — Multi-Step Orchestration for Bun RapidPhoto: Pro Photo Editor App - App Store GitHub - DheerG/swarms: Achieve extraordinary results with claude code across a variety of tasks SPICE simulation → oscilloscope → verification with Claude Code — Lucas Gerads Show HN: VCoding – A 5 MB native Windows IDE with no dynamic dependencies Show HN: LLMs don't hallucinate because they're bad at math, it's the format GitHub - Agent-FM/agentfm-core: AgentFM is a peer-to-peer network that turns everyday computers into a decentralized AI supercomputer. AgentFM lets you run massive AI workloads directly across a global mesh of idle CPUs and GPUs. Show HN: Tracking Top US Science Olympiad Alumni over Last 25 Years GitHub - Potarix/agent-hub: One place to talk to all your agents Show HN: Runtime security for AI agents(injection,tool abuse, data exfiltration) GitHub - dubeyKartikay/lazyspotify: Terminal Spotify client for macOS and Linux GitHub - the-banana-tool/king-louie: Easy to use GUI Personal AI Assistant. Win/Linux/Mac. Show HN I made my vacation rental bookable by AI agents–no Airbnb, 0% commission GitHub - basteez/jsf-autoreload: maven plugin to enable hot reload on jsf projects uvm32/hosts/host-gdbstub at main · ringtailsoftware/uvm32 GitHub - labsai/EDDI: Config-driven engine that turns JSON into production-grade AI agents. Multi-agent orchestration, 12+ LLM providers, MCP/A2A protocols, RAG, persistent memory, and enterprise compliance (EU AI Act, GDPR, HIPAA). Built on Quarkus. GitHub - glitchnsec/fortyone-oss: AI Executive Assistant Platform Quickstart | Alien GitHub - muxshed/shed: One stream in, or many. Every destination, simultaneously. No cloud middleman, no per-channel fees, no limits. GitHub - ocrbase-hq/ocrbase: 📄 PDF/IMG ->.MD/JSON Document OCR API for PaddleOCR and GLMOCR. Self-hostable. GitHub - impactjo/home-memory: MCP server that lets your AI assistant remember everything about your home. GitHub - Sets88/dbcls: DbCls is a powerful terminal database client that supports various databases GitHub - neptun2000/heor-agent-mcp GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh RollQuation: Math Puzzles - Apps on Google Play GitHub - dropbox/witchcraft Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis GitHub - opentalon/opentalon: OpenTalon is an open-source platform built from the ground up in Go as a robust alternative to OpenClaw LinkedIn™ 职位抓取工具 - Chrome 应用商店
GitHub - xiangnongWu2233/rubiks-cube.nvim: A playable Rub...
xiangnongWu2 · 2026-05-19 · via Hacker News: Show HN

A playable Rubik's cube inside Neovim — isometric ASCII render, full move set in Singmaster notation, a timer, and best-time persistence.

Rubik's cube being scrambled and auto-solved in Neovim

Requirements

  • Neovim 0.10+ (uses vim.uv)

  • termguicolors enabled (recommended; falls back to cterm approximations otherwise)

  • Optionalkociemba CLI on $PATH, required only for the auto-solve feature (S / :RubikscubeSolve). Install with one of:

    pipx install kociemba          # recommended: isolated venv
    uv tool install kociemba       # if you use uv
    pip install kociemba           # fallback

    Run :checkhealth rubikscube to verify your setup.

Installation

lazy.nvim

{
  "xiangnongWu2233/rubiks-cube.nvim",
  cmd = "Rubikscube",
  opts = {},  -- or pass any config table; see below
}

packer.nvim

use {
  "xiangnongWu2233/rubiks-cube.nvim",
  cmd = "Rubikscube",
  config = function() require("rubikscube").setup({}) end,
}

Usage

:Rubikscube

Features

  • All 18 standard moves: face turns + cube rotations, each in CW/CCW form
  • Built-in timer with pause/resume
  • Solve detection — flash + popup with time, move count, and personal best
  • Persistent best time stored at stdpath("data")/rubikscube/best.json
  • Optional auto-solve via the external kociemba CLI — see the Auto-solve section

Controls

Key Action
u / U U face CW / CCW
d / D D face CW / CCW
l / L L face CW / CCW
r / R R face CW / CCW
f / F F face CW / CCW
b / B B face CW / CCW
x / X rotate whole cube around R axis
y / Y rotate whole cube around U axis
z / Z rotate whole cube around F axis
<Space> start / pause timer
s scramble (default 20 random moves)
S auto-solve (requires kociemba — see Auto-solve)
<CR> reset to solved (clears timer)
? toggle help popup
q quit

Lowercase = clockwise face turn (Singmaster notation); uppercase = prime (counter-clockwise).

Auto-solve

Press S (or :RubikscubeSolve) to animate a full solve of the current cube state. The plugin shells out to the external kociemba CLI (install above) — Herbert Kociemba's two-phase algorithm, ~20 moves per solution, computed in milliseconds.

Tempo defaults to 200 ms per move; tune via solver.tempo_ms in setup(). Pressing any face key during the animation cancels it and lets you take over. If kociemba isn't on $PATH, S shows a notification with install instructions — :checkhealth rubikscube will report what's missing.

Configuration

Default:

require("rubikscube").setup({
  keymaps = {
    -- Face turns: configure the lowercase letter; uppercase auto-binds the prime.
    U = "u", D = "d", L = "l", R = "r", F = "f", B = "b",
    -- Cube rotations: same convention.
    x = "x", y = "y", z = "z",
    -- Actions.
    scramble = "s",
    reset    = "<CR>",
    timer    = "<Space>",
    quit     = "q",
    help     = "?",
    solve    = "S",  -- auto-solve via external `kociemba`
    -- Any entry above may be set to `false` to skip the binding entirely.
  },
  scramble_length = 20,   -- moves applied by the scramble action
  persist_best    = true, -- set false to disable writing best.json (reads still work)
  open_in         = "float", -- "float" | "current" | "split" | "vsplit"
  solver = {
    tempo_ms = 200, -- delay between animated moves during auto-solve
  },
})

Colors

Sticker colors are exposed as the highlight groups:

RubiksW   white
RubiksY   yellow
RubiksO   orange
RubiksR   red
RubiksG   green
RubiksB   blue

Override any of them from your colorscheme — they're set with default = true, so user overrides survive a plugin reload:

highlight RubiksO guibg=#ff8800 guifg=#000000

Commands

Command Description
:Rubikscube Open the cube (no-op if a cube is already open)
:RubikscubeSolve Start the auto-solve animation on the open cube. No-op (with a warning) if no cube is open or if kociemba isn't installed.
:checkhealth rubikscube Diagnose plugin requirements: Neovim version, termguicolors, and the optional kociemba CLI.