{"id":17113067,"url":"https://github.com/emmt/tcl.jl","last_synced_at":"2025-07-25T17:02:30.002Z","repository":{"id":71510265,"uuid":"129127853","full_name":"emmt/Tcl.jl","owner":"emmt","description":"Optimized Julia interface to Tcl/Tk","archived":false,"fork":false,"pushed_at":"2021-02-18T08:43:49.000Z","size":192,"stargazers_count":4,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-23T22:35:00.066Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Julia","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/emmt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-04-11T17:09:48.000Z","updated_at":"2024-06-13T20:22:31.000Z","dependencies_parsed_at":"2023-05-17T08:40:03.463Z","dependency_job_id":null,"html_url":"https://github.com/emmt/Tcl.jl","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmt%2FTcl.jl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmt%2FTcl.jl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmt%2FTcl.jl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmt%2FTcl.jl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/emmt","download_url":"https://codeload.github.com/emmt/Tcl.jl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248107873,"owners_count":21049025,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-14T17:02:46.098Z","updated_at":"2025-04-09T20:33:47.904Z","avatar_url":"https://github.com/emmt.png","language":"Julia","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Julia interface to Tcl/Tk\n\n[![License](http://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat)](LICENSE.md)\n[![Build Status](https://travis-ci.com/emmt/Tcl.jl.svg?branch=master)](https://travis-ci.com/emmt/Tcl.jl)\n\nThis package provides an optimized Julia interface to\n[Tcl/Tk](http://www.tcl.tk/).\n\n# Features\n\n* As many Tcl interpreters as needed can be started.  At least one is always\n  there and serves as the default interpreter.\n\n* Reading/writing a Tcl variable is as easy as:\n\n  ```julia\n  interp[var]             # read Tcl variable value\n  interp[var] = val       # set Tcl variable value\n  interp[var] = nothing   # unset Tcl variable\n  ```\n\n  where `interp` is a Tcl interpreter, `var` is the name of the Tcl variable\n  and `val` is its value.\n\n* Consistent conversion between Tcl internal representation of values and Julia\n  types.  That is to say, evaluating a Tcl script or getting the value of a Tcl\n  variable not necessarily yields a string.  For instance, a Tcl float yields a\n  Julia float, a list of integers yields a Julia vector of integers, a list of\n  lists yields a vector of vectors, and so on.  Of course, forcing conversion\n  to strings is still possible (and easy).\n\n* By avoiding systematic string conversion, faster communication with Tcl/Tk is\n  achieved.\n\n* Tcl objects can be manipulated directly in Julia and may be converted to\n  Julia values (strings, integers, floats or vectors of these).\n\n* Scripts can be strings but can also be expressed using a syntax which is\n  closer to Julia.  For instance, keywords are converted to Tcl options.\n  Scripts can also be built as efficient lists of Tcl objects.  Evaluating\n  a script is done by:\n\n  ```julia\n  Tcl.eval(script)         # evaluate Tcl script in initial interpreter\n  Tcl.eval(interp, script) # evaluate Tcl script with specific interpreter\n  interp(script)           # idem\n  ```\n\n* A number of wrappers are provided to symplify the use of widgets.\n\n* Julia arrays can be used to set Tk images and conversely.  A number of\n  methods are provided to apply pseudo-colormaps or retrieve colorplanes or\n  alpha channel.  Temporaries and copies are avoided.\n\n* Julia functions may be used as Tk callbacks.\n\n\n# Alternatives\n\nThere exists [another Julia Tk package](http://github.com/JuliaGraphics/Tk.jl)\nbut with different design choices and some issues I wanted to avoid (for\ninstance, X conflict with PyPlot when using Gtk backend, Qt backend is OK).\nThis is why I started this project.  I would be very happy if, eventually, the\ntwo projects merge.\n\n\n# Installation\n\nTcl.jl is not yet an [offical Julia package](https://pkg.julialang.org/) but it\nis easy to install from the REPL of Julia's package\nmanager\u003csup\u003e[[pkg]](#pkg)\u003c/sup\u003e as follows:\n\n```julia\npkg\u003e add https://github.com/emmt/Tcl.jl.git\n```\n\nwhere `pkg\u003e` represents the package manager prompt and `https` protocol has\nbeen assumed; if `ssh` is more suitable for you, then:\n\n```julia\npkg\u003e add git@github.com:emmt/Tcl.jl.git\n```\n\nTo check whether Tcl package works correctly:\n\n```julia\npkg\u003e test Tcl\n```\n\nTo update to the last version:\n\n```julia\npkg\u003e update Tcl\npkg\u003e build Tcl\n```\n\nand perhaps test again...\n\nIf something goes wrong, it may be because you already have an old\nversion of Tcl.jl.  Uninstall Tcl.jl as follows:\n\n```julia\npkg\u003e rm Tcl\npkg\u003e gc\npkg\u003e add https://github.com/emmt/Tcl.jl.git\n```\n\nbefore re-installing.\n\n\u003chr\u003e\n\n- \u003ca name=\"pkg\"\u003e\u003csup\u003e[pkg]\u003c/sup\u003e\u003c/a\u003e To switch from [julia\n  REPL](https://docs.julialang.org/en/stable/manual/interacting-with-julia/) to\n  the package manager REPL, just hit the `]` key and you should get a\n  `... pkg\u003e` prompt.  To revert to Julia's REPL, hit the `Backspace` key at the\n  `... pkg\u003e` prompt.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femmt%2Ftcl.jl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femmt%2Ftcl.jl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femmt%2Ftcl.jl/lists"}